检索已修改引用的原始值

时间:2009-02-10 20:07:00

标签: c# entity-framework

我已经找到了如何使用ObjectStateManagerObjectStateEntries来确定给定实体的标量属性的原始值。

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

1 个答案:

答案 0 :(得分:0)

只需获取所有添加或删除的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