实体框架更改跟踪API和参考条目

7 c# ado.net entity-framework change-tracking entity-framework-4.1

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

foreach (var entry in this.ChangeTracker.Entries<MyClass>())
{
    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
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

我认为这是可能的,因为EF必须跟踪这一点.

有人可以帮忙吗?

谢谢,本

Lad*_*nka 7

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