entity framework更改跟踪API和参考条目

希望在我的DbContext子类上编写通用审计代码。

foreach (var entry in this.ChangeTracker.Entries()) { if (entry.State == EntityState.Modified) { var entityProperties = entry.Entity.GetType().GetProperties(); foreach (var entityProperty in entityProperties) { DbMemberEntry propertyEntry = entry.Member(property.Name); if (propertyEntry is DbPropertyEntry) { // IsModified available } else if (propertyEntry is DbReferenceEntry) { // IsModified not available } } } } 

1)如果我只更改引用属性,则entry.State值为“Unchanged”。

2)即使将第1点设置为“已修改”,DbReferenceEntry类似乎也没有IsModified属性,也没有原始值。

我认为这是可能的,因为EF必须跟踪这个。

有人可以帮忙吗?

谢谢,本

是参考条目(导航属性)不跟踪更改。 它是外键属性(在外键关联的情况下)或独立关联的单独对象跟踪变化的责任。 在ObjectContext API中,您可以通过ObjectStateManager获取这些对象,但看起来DbContext API没有这个可用。 我在MSDN论坛上问了一个关于这个的问题。