我已经找到了如何使用ObjectStateManager
和ObjectStateEntries
来确定给定实体的标量属性的原始值。
我现在需要知道的是如何对导航属性执行相同的操作。 GetModifiedProperties
上的ObjectStateEntry
方法不会返回导航属性。
答案 0 :(得分:0)
只需获取所有添加或删除的ObjectStateEntries,然后使用LINQ仅获取代表关系的那些:
private IEnumerable<ObjectStateEntry> GetModifiedRelationshipEntries()
{
return ObjectStateManager.GetObjectStateEntries(
EntityState.Added | EntityState.Deleted)
.Where(e => e.IsRelationship);
}
在为EF编写审核日志时,我发现Daniel Simmons的这两个博客条目非常有用: