如何在SavingChanges上的实体中检测到集合已更改?

时间:2010-12-03 08:33:42

标签: entity-framework-4

我在保存实体时实现了OnSaveChanges()。

除了找出已更改的实体的所有属性之外,如何查找已更改的实体中集合的所有属性?

EG 客户拥有房产

public List<Address>AddressList {get;set;}

现在,如果其中一个地址改变了我如何检测它?

我使用以下方法检测所有ObjectStateEntry修改过的

  IEnumerable<ObjectStateEntry> changes =
            stateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted);

现在作为一个说法,除了对实体的更改之外,我需要找到实体可能拥有的集合的所有更改。

你是怎么做到的?

1 个答案:

答案 0 :(得分:2)

在调用SaveChanges()之前,您需要调用ObjectContext.DetectChanges()。如果不这样做,则在调用SavingChanges方法时,集合中的项目将不会包含在GetObjectStateEntries中。