希望在我的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
            }
        }
    }
}

1)如果我只更改参考属性,则条目值为“不变”。

2)即使点1设置为“修改”,dbreferenceentry类似乎没有ISMODIED属性,也没有原始值。

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

谁能帮忙?

谢谢,本

有帮助吗?

解决方案

是的参考条目(导航属性)不跟踪更改。这是外国密钥财产的责任(如果是外国密钥协会)或独立关联的单独对象跟踪变化。在ObjectContext API中,您可以通过 ObjectStateManager 但是看起来DBContext API没有可用的。我问了一个问题 MSDN论坛.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top