这两者有什么区别,哪个更受欢迎?使用更改对象状态或Entry().state
db.ObjectStateManager.ChangeObjectState(employeeFromDB, EntityState.Modified)
VS
context.Entry(employeeFromDB).State = EnitityState.Modified;
答案 0 :(得分:2)
基本上,您正在调用DbContext类的基础System.Data.Objects.ObjectStateManager
上的函数来更改属性vs直接通过DbContext检索和更改它。
在第一个示例中,ChangeObjectState()
只能用于修改上下文中已存在的实体的ObjectStateEntry
。如果您尝试修改不存在的内容,则会引发异常。
检查ObjectStateManager.ChangeObjectState
中的例外情况在第二个示例中,如果对象在上下文中不存在,那么当您调用db.saveChanges()
时,您仍会遇到异常,但可以使用相同的方法添加只需将EntityState.Modified
更改为EntityState.Added
您还需要使用((IObjectContextAdapter)context).ObjectContext