这两者之间有什么区别,哪一个是首选的?使用更改对象状态或Entry().state
db.ObjectStateManager.ChangeObjectState(employeeFromDB, EntityState.Modified)vs
context.Entry(employeeFromDB).State = EnitityState.Modified;发布于 2014-10-07 15:14:53
基本上,您是在调用DbContext类的底层DbContext上的函数来更改属性,而不是通过DbContext直接检索和更改属性。
在第一个示例中,ChangeObjectState()只能用于修改上下文中已经存在的实体的ObjectStateEntry。如果试图修改不存在的内容,就会引发异常。
检查ObjectStateManager.ChangeObjectState中的异常
在第二个示例中,如果对象在添加的上下文中不存在,则在调用db.saveChanges()时仍然会得到异常,但通过将EntityState.Modified更改为EntityState.Added,也可以使用相同的方法添加新记录
您还需要使用ObjectContext从DbContext中获取底层的((IObjectContextAdapter)context).ObjectContext
https://stackoverflow.com/questions/26228322
复制相似问题