2014-05-16 79 views
0

之前,我想,當一個用戶更新的實體框架對象(在整個對象圖中的任何差異)來記錄的差異。我暫時堅持在這個特定的項目中使用版本5的EF。數差更改提交到DB

對於每個說它是用命令列表的客戶。 我要輸出什麼在客戶字段(例如像從4變爲5的總數量或訂單)改變。然後輸出每個訂單中更改的內容(例如,訂單狀態從訂購更改爲交貨,並添加訂單5)。

所以日誌會是這個樣子 客戶修改ID = 5,現場TotalNumberOfOrders:原單值4,新價值5 Customer.Order新增ID = 10 Customer.Order修改後的字段控管數量:Origanl值= 15,新值= 2

我只是將這些值記錄到磁盤的一些診斷。

+1

看看這http://stackoverflow.com/questions/6867459/implementing-audit-log-change-history-with-mvc-entity-framework –

回答

0

您可以OnSavingChanges()回調函數,同時將更改保存到數據庫都會調用登記。審計 後來你的日誌原始/改性領域的建議。

void OnSavingChanges(object sender, EventArgs e) 
    { 
     var modifiedEntities = ObjectStateManager.GetObjectStateEntries(EntityState.Modified); 
     foreach (var entry in modifiedEntities) 
     { 
      var modifiedProps = ObjectStateManager.GetObjectStateEntry(entry.EntityKey).GetModifiedProperties(); 
      var currentValues = ObjectStateManager.GetObjectStateEntry(entry.EntityKey).CurrentValues; 
      //iterate and save changes to log for auditing. 
     } 
    } 
+0

我給這個一去,如果它的作品被接受爲答案。 – DermFrench