【问题标题】:ObjectStateManager vs Entry().StateObjectStateManager 与 Entry().State
【发布时间】:2017-01-11 17:01:35
【问题描述】:

这两者有什么区别,哪个更受欢迎?使用更改对象状态或Entry().state

db.ObjectStateManager.ChangeObjectState(employeeFromDB, EntityState.Modified)

context.Entry(employeeFromDB).State = EnitityState.Modified;

【问题讨论】:

    标签: entity-framework entity-framework-4 entity-framework-6


    【解决方案1】:

    基本上,您是在 DbContext 类的底层 System.Data.Objects.ObjectStateManager 上调用一个函数来更改属性,而不是直接通过 DbContext 检索和更改它。

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

    检查ObjectStateManager.ChangeObjectState中的异常

    在第二个例子中,如果对象在它被添加的上下文中不存在,当你调用db.saveChanges() 时你仍然会得到一个异常,但是同样的方法可以用来添加一个新的记录,只需改变@ 987654326@转EntityState.Added

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 2016-09-10
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      相关资源
      最近更新 更多