【问题标题】:Entity's state is not changed when a collection navigation property is changed更改集合导航属性时不会更改实体的状态
【发布时间】:2015-09-02 00:16:17
【问题描述】:

这按预期工作:

var customer = getCustomerFromSomewhere();
customer.Name = "Foo";
context.SaveChanges();
// ...
// ... in an override of SaveChanges, get the entry state
var isModified = entryState == EntityState.Modified;  // ==true

简单属性已更改,因此实体会自动标记为已被上下文修改。

现在考虑更改作为集合的导航属性:

var customer = getCustomerFromSomewhere();
customer.Orders.Clear();
var order = getOrderFromSomewhere();
customer.Orders.Add(order);
context.SaveChanges();
// ...
// ... in an override of SaveChanges, get the entry state
var isModified = entryState == EntityState.Modified;  // ==false

因此,在这种情况下,实体不会自动标记为已修改。我通过手动将其标记为已修改来解决此问题,但我希望它自动发生。

我该怎么做?如何检测实体的关系是否被修改?

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    诀窍是use the answer here,但这对我不起作用,直到我隐式强制检查更改:

    myContext.ChangeTracker.DetectChanges();
    

    【讨论】:

      猜你喜欢
      • 2021-07-21
      • 2019-11-09
      • 2017-05-21
      • 2021-04-21
      • 2012-05-14
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多