我已经弄清楚了如何使用ObjectStateManager
和ObjectStateEntries
确定给定实体的标量属性的原始值。
我现在需要知道的是如何对导航属性执行相同的操作。 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/