我正在尝试将更改记录到数据库中,以便用户可以看到谁更改了内容。我正在使用DbEntityEntry
查看并记录已修改的DbPropertyEntity
。当我想将更改记录到导航属性时,我遇到了问题。我使用Reference()
方法来引用导航属性,但与DbPropertyEntity
不同,DbReferenceEntry
没有OriginalValue
只有CurrentValue
属性。你如何获得导航属性的OriginalValue
?
//Get the field that hold the id of the foreign key
var field = entry.Property(x => x.field);
//Check to see if the user changed the value
if (field.IsModified)
{
//Get the reference property associated with the field
var fieldRef = entry.Reference(x => x.fieldRef);
//Log the id change
Log(field.Name, field.CurrentValue, field.OriginalValue);
//Can't get the OriginalValue
Log(fieldRef.Name, fieldRef.CurrentValue, ???);
}
答案 0 :(得分:1)
您希望记录哪些参考资料?
如果要记录关系中的更改(=外键中的更改),则应将外键映射为单独的属性,并将其记录为普通字段。如果您没有映射外键,则会有independent association。支持DbContext API is limited中的独立关联。完全支持仅在ObjectContext API中(您可以从DbContext API使用它)但它仍然无法解决您的问题 - 独立关联不能处于修改状态。它可以是未更改,已添加或已删除的状态。如果更改引用,则旧关联将标记为已删除并添加new =上下文跟踪有两个单独的关联对象。