EF中的上下文(DbContext)简介

EF中的上下文(DbContext)简介

DbContext是实体类和数据库之间的桥梁, DbContext主要负责与数据交互,主要作用:

1、DbContext包含所有的实体映射到数据库表的实体集(DbSet < TEntity >)。

2、DbContext 将LINQ-to-Entities查询转换为SQL查询并将其发送到数据库。

3、更改跟踪: 它跟踪每个实体从数据库中查询出来后发生的修改变化。

4、持久化数据: 它也基于实体状态执行插入、更新和删除操作到数据库中。

在这里插入图片描述

DbContext中的DbSet

DbSet表示上下文中指定类型的所有实体的集合或可从数据库中查询的指定类型的所有实体的集合。

在这里插入图片描述

DbSet常用方法

TestDBContext tdb = new TestDBContext();
在这里插入图片描述

在EF中实体的五种状态:

1.detached:实体不在上下文的追踪范围内,如刚new的实体,可以通过Attach()添加到上下文,此时状态为unchanged。

2.unchanged:未改变,如刚从数据库读取出来的实体。

3.added:添加状态,一般执行Add/AddRange时标记为added。因为新对象在数据库中没有记录,所以不能转为deleted和modified状态。

4.deleted:删除状态,一般执行Remove/RemoveRange时标记为deleted,不能转换为added状态。

5.modified:修改状态,改变了实体的属性会处于这个状态,能转为deleted状态,不能转换为added状态。

EF如何判断状态

为当前对象(需要追踪的)创建一个DbEntityEntry对象,此对象包含:

Current Value(当前值)/Original Value(原始值)/Database Value(数据库里的值)

只需要比较这三个值,很容易就知道哪些属性被修改了。

设置context.Configuration.AutoDetectChangesEnabled = false则不会去追踪,默认是true。

也可以自己指定状态:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值