一. 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()