EF(EntityFrameWork) ORM(对象关系映射框架/数据持久化框架),根据实体对象操作数据表中数据的一种面向对象的操作框架,底层也是调用ADO.NET

ASP.NET MVC 项目会自动导入MVC程序集,因为默认.NET环境(GAC)中没有这个程序集

 1: EF数据上下文 继承于 DbContext ; DBQuery<T> ,支持延迟加载:只有当使用到数据的时候,才去查询数据库; 主要成员:表映射的实体集合 Set<T>,Entry<T>()

  context.Model -->Dbset<Model>

  context.set<Model>() -->Dbset<Model>

  //使用状态版的时候,执行修改/删除的时候必须指定主键。

 2: EF中会为每个 管理的 实体对象 创建一个代理包装类对象,其中会跟踪 实体对象 的状态和每个属性的状态;

 3: [EF对象管理容器]每个通过EF数据上下文操作的实体对象,都需要存在上下文的容器中,一旦通过上下文的某个方法操作了实体对象后,那么上下文就会给它加一个状态标识。

     但调用上下文的SaveChanges方法的时候,上下文就会遍历容器中的所有对象,并检查他们的状态标识,并依照标识的值进行相应的增删改查sql操作

一、通常使用EF更新的方式,先查询出要修改的数据,然后再修改新的值;实体对象被修改的属性 在 代理包装类对象里 的对应属性状态会被修改记录下修改状态,

      等到调用SaveChanges时,EF会遍历其管理的每个实体对象,并根据其 包装类对象 的状态,生成增删改查sql语句并执行;

      此例中修改操作,会生成 修改的sql语句(注意:此处只为修改过的属性生成sql语句),最后执行。

 1 create database MyFirstEF
 2 on primary
 3 (
 4     name='MyFirstEF.mdf',
 5     --修改为自己电脑上SQL DB路径
 6     filename='E:\ProgramMSSQLServerDB\MyFirstEF.mdf',
 7     size=5mb,
 8     maxsize=100mb,
 9     filegrowth=10%
10 )
11 log on
12 (
13     name='MyFirstEF_log.ldf',
14     --修改为自己电脑上SQL DB路径
15     filename='E:\ProgramMSSQLServerDB\MyFirstEF_log.ldf',
16     size=2mb,
17     maxsize=100mb,
18     filegrowth=5mb
19 )
20 go
21 
22 use MyFirstEF
23 go
24 
25 create table CustomerInfo
26 (
27     id int identity(1,1) primary key,
28     customerName nvarchar(100) not null,
29     customerDate datetime
30 )
31 go
32 
33 insert into CustomerInfo values('aaaaa',getdate())
34 go
35 
36 select * from CustomerInfo
37 go
38 
39 create table OrderInfo
40 (
41   id int identity(1,1) primary key,
42   orderName nvarchar(100),
43   customerId int
44 )
45 go
46 
47 
48 alter table OrderInfo
49 add constraint FK_OrderInfo_CustomerInfo
50 foreign key(customerId) references CustomerInfo(id)
51 on delete cascade
52 on update cascade
53 
54 go
55 
56 
57 select * from CustomerInfo
58 select * from OrderInfo
create SQL

相关文章: