ORM之EF学习---增删改查

ORM概述:

     什么是ORM:

           对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的"虚拟对象数据库"。(百度百科)

       自己理解:表实体与表的相互转换.(1).把表实体的变化转换到数据库中。(2).将表数据转换为表实体。


  什么是EF:

       Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。

       Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性         (association),让数据库的 E/R 模型完全的转成对象模型,如此让程序设计师能用最熟悉的编程语言来调用访问。而在抽象化的结构之下,则是高度集成与对应结构的概念层、对应层和储存层,以 及支持 Entity Framework 的数据提供者 (provider),让数据访问的工作得以顺利与完整的进行。

        (1) 概念层:负责向上的对象与属性显露与访问。

        (2) 对应层:将上方的概念层和底下的储存层的数据结构对应在一起。

        (3) 储存层:依不同数据库与数据结构,而显露出实体的数据结构体,和 Provider 一起,负责实际对数据库的访问和 SQL 的产生。

与ADO.NET:

ORM之EF学习---增删改查

EFDEMO:

      新建一个控制台程序后,在添加新项中添加ADO.NET实体模型。

ORM之EF学习---增删改查

   

配置(自动生成):

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <connectionStrings>
    <add name="StudentEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=Student;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>




  //增加操作

            //1.获取上下文对象
            using (StudentEntities dbcontext = new StudentEntities())
            {
                //2.创建添加实体
                testTable test = new testTable() { id = "12354555",name="zwc" };
                dbcontext.testTable.Add(test);
                //3.保存改变
                dbcontext.SaveChanges();
                Console.Read();
                                
            }

        }

运行结果:

ORM之EF学习---增删改查


 //查询操作
                testTable test = null;
                test = dbcontext.testTable.Where(x=>x.name =="zwc").FirstOrDefault();
                Console.WriteLine("id:"+test.id+","+"name:"+test.name);
                Console.Read();

运行结果:

ORM之EF学习---增删改查


//修改操作
                testTable updatatest = new testTable() { id = "12354555", name = "张文超" };
                testTable oldTest =  dbcontext.testTable.Where(x=>x.id == updatatest.id).FirstOrDefault();
                oldTest.name = updatatest.name;
                dbcontext.SaveChanges();

运行结果:

ORM之EF学习---增删改查


        //分页操作
                 List<testTable> ListDate = new List<testTable>();
                string str = null;  //查询条件
                int page =1; //当前页数
                int rows =10; //页数显示大小
               //判断条件是否为空
                    if (!string.IsNullOrEmpty(str))
                    {
                        ListDate = dbcontext.testTable.Where(x=>x.name.Contains(str)).ToList();
                    }
                    else {
                        ListDate = dbcontext.testTable.ToList();
                    }
                    //确定返回的数据集
                    var results = ListDate.OrderByDescending(p => p.id).Skip((page - 1) * rows).Take(rows);
                    var total = ListDate.Count();

运行结果:

ORM之EF学习---增删改查ORM之EF学习---增删改查



                 //删除操作
                testTable remTest = new testTable() { id = "12354555", name = "张文超" };
                testTable re = dbcontext.testTable.Where(x => x.id == remTest.id).FirstOrDefault();
                dbcontext.testTable.Remove(re);
                dbcontext.SaveChanges();


         运行结果:

ORM之EF学习---增删改查


这是EF初探,使用的是Database-First方法.ORM思想就是 表实体与表的相互转换。