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:
EFDEMO:
新建一个控制台程序后,在添加新项中添加ADO.NET实体模型。
配置(自动生成):
<?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="data source=.;initial catalog=Student;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework""
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();
}
}
运行结果:
//查询操作
testTable test = null;
test = dbcontext.testTable.Where(x=>x.name =="zwc").FirstOrDefault();
Console.WriteLine("id:"+test.id+","+"name:"+test.name);
Console.Read();
运行结果:
//修改操作
testTable updatatest = new testTable() { id = "12354555", name = "张文超" };
testTable oldTest = dbcontext.testTable.Where(x=>x.id == updatatest.id).FirstOrDefault();
oldTest.name = updatatest.name;
dbcontext.SaveChanges();
运行结果:
//分页操作
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();
运行结果:
//删除操作
testTable remTest = new testTable() { id = "12354555", name = "张文超" };
testTable re = dbcontext.testTable.Where(x => x.id == remTest.id).FirstOrDefault();
dbcontext.testTable.Remove(re);
dbcontext.SaveChanges();
运行结果:
这是EF初探,使用的是Database-First方法.ORM思想就是 表实体与表的相互转换。