我已经弄清楚了如何使用ObjectStateManagerObjectStateEntries确定给定实体的标量属性的原始值。

我现在需要知道的是如何对导航属性执行相同的操作。 GetModifiedProperties上的ObjectStateEntry方法不返回导航属性。

最佳答案

只需获取所有添加或删除的ObjectStateEntries,然后使用LINQ仅获取那些表示关系的对象:

private IEnumerable<ObjectStateEntry> GetModifiedRelationshipEntries()
{
    return ObjectStateManager.GetObjectStateEntries(
            EntityState.Added | EntityState.Deleted)
            .Where(e => e.IsRelationship);
}


在为EF编写审核日志时,我发现Daniel Simmons的以下两个博客条目非常有用:

http://blogs.msdn.com/b/dsimmons/archive/2008/01/16/ef-extension-method-extravaganza-part-i-objectstateentry.aspx

http://blogs.msdn.com/b/dsimmons/archive/2008/01/17/ef-extension-methods-extravaganza-part-ii-relationship-entry-irelatedend.aspx

关于c# - 检索修改后的引用的原始值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/533950/

10-12 12:42