EF状态System.Data.EntityState

一. System.Data.EntityState一共有五种状态

分别是Added,Deleted,Modified,UnChanged,Detached下面给一个简单的解释

System.Data.EntityState.Added

在上下文中,而且对象是需要添加的状态

System.Data.EntityState.Deleted

在上下文中,而且对象是需要删除的状态

System.Data.EntityState.Modified

在上下文中,而且对象是需要修改的状态

System.Data.EntityState.UnChanged

在上下文中,对象没有任何状态

System.Data.EntityState.Detached

没有在上下文中,和ef上下文没有关联的状态

二. System.Data.EntityState.Added

在这里插入图片描述
调用oae.Users.Add方法后对象属于EntityState.Added状态

三. System.Data.EntityState.Deleted

在调用EntityState.Deleted之前,该实体必须是Unchanged状态。

调用Attach方法后对象属于EntityState.Unchanged状态,当然我们还可以使用oae.Entry(item).State = EntityState.Unchanged;方式把对象以Unchanged状态附加到上下文,道理都一样
在这里插入图片描述
调用Remove方法后对象属于EntityState.Deleted状态

四. System.Data.EntityState.Modified

在调用EntityState.Modified之前,该实体必须是Unchanged状态。

调用Attach方法后对象属于EntityState.Unchanged状态,当然我们还可以使用oae.Entry(item).State = EntityState.Unchanged;方式把对象以Unchanged状态附加到上下文,道理都一样
在这里插入图片描述
调用oae.Entry(Users).State = EntityState.Modified对象属于EntityState.Modified状态。

五. System.Data.EntityState.UnChanged

①查询出来的对象属于EntityState.UnChanged状态,注意不加AsNoTracking()
在这里插入图片描述
②自上次调用 System.Data.Objects.ObjectContext.SaveChanges() 方法后属于EntityState.UnChanged状态

③new的对象调用Attach方法后对象属于EntityState.Unchanged状态,当然我们还可以使用oae.Entry(item).State = EntityState.Unchanged;方式把对象以Unchanged状态附加到上下文,道理都一样
在这里插入图片描述

六. System.Data.EntityState.Detached

①new 实体对象()

②查询数据库的对象的时候加AsNoTracking()

七.注意:本地自己创建的Dto数据不是当前上下文的模型的一部分。更没有EntityState状态一说。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值