【问题标题】:Is EntityState.Modified required for an update?更新需要 EntityState.Modified 吗?
【发布时间】:2015-04-08 23:41:05
【问题描述】:

我见过很多人在更新记录的时候使用:

...
ms.Status = status;
db.Entry(ms).State = EntityState.Modified;
db.SaveChanges();

这条线是必需的吗?没有它我也能进行更新。

db.Entry(ms).State = EntityState.Modified;

我想知道如果上下文已经知道它应该更新该记录而您没有明确指定它,那么这个语句实际上是用来做什么的,那么为什么还要明确指定它呢?

【问题讨论】:

    标签: entity-framework-4


    【解决方案1】:

    如果您在实体未被 EF 上下文跟踪(实体已分离)时完成了对实体的更改,则它是必需的。如果您从上下文加载实体,修改它并将其保存在您不需要使用它的同一上下文中,因为 EF 将跟踪更改并自动设置状态。

    【讨论】:

    • 其他需要的场景:this.Configuration.AutoDetectChangesEnabled = false或实体来自.AsNoTracking查询(context.myMsSet.AsNoTracking();
    【解决方案2】:

    据我了解,这仅在实体已重新附加到上下文时才需要使用。否则没有。

    【讨论】:

      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 2015-07-26
      • 2011-12-02
      • 1970-01-01
      • 2019-11-19
      • 2017-11-11
      • 2017-04-27
      • 1970-01-01
      相关资源
      最近更新 更多