首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectStateManager vs Entry().State

ObjectStateManager vs Entry().State
EN

Stack Overflow用户
提问于 2014-10-07 03:57:15
回答 1查看 2.5K关注 0票数 3

这两者之间有什么区别,哪一个是首选的?使用更改对象状态或Entry().state

代码语言:javascript
复制
db.ObjectStateManager.ChangeObjectState(employeeFromDB, EntityState.Modified)

vs

代码语言:javascript
复制
context.Entry(employeeFromDB).State = EnitityState.Modified;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-07 15:14:53

基本上,您是在调用DbContext类的底层DbContext上的函数来更改属性,而不是通过DbContext直接检索和更改属性。

在第一个示例中,ChangeObjectState()只能用于修改上下文中已经存在的实体的ObjectStateEntry。如果试图修改不存在的内容,就会引发异常。

检查ObjectStateManager.ChangeObjectState中的异常

在第二个示例中,如果对象在添加的上下文中不存在,则在调用db.saveChanges()时仍然会得到异常,但通过将EntityState.Modified更改为EntityState.Added,也可以使用相同的方法添加新记录

您还需要使用ObjectContext从DbContext中获取底层的((IObjectContextAdapter)context).ObjectContext

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26228322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档