我正在嘗試將更改記錄到數據庫,以便用戶可以查看誰更改了哪些內容。我正在使用DbEntityEntry
來檢查並記錄已修改的DbPropertyEntity
。當我想要將更改記錄到導航屬性時,我遇到了問題。我使用Reference()
方法來獲得對導航屬性的引用,但不像DbPropertyEntity
,DbReferenceEntry
沒有OriginalValue
只有CurrentValue
屬性。你如何獲得導航屬性的OriginalValue
?DbPropertyEntry獲取原始值
//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, ???);
}
我沒有使用edmx工具,我只是創建了一個數據庫並添加了字段,然後更新了我的域對象。我正在記錄外鍵更改。問題是用戶會看到這個日誌鍵的變化沒有意義(例如TypeID從3改爲4),我需要在導航屬性中記錄更改(例如Type從Student值更改爲老師)。 – 2012-07-11 20:56:10