我試圖在我的MVC 4中使用EF應用程序執行審覈,按照此帖http://jmdority.wordpress.com/2011/07/20/using-entity-framework-4-1-dbcontext-change-tracking-for-audit-logging/。爲什麼DbEntityEntry的原始值與新值相匹配?
我在修改實體時無法找到更改的屬性。我有一個繼承自DbContext的類並重寫SaveChanges方法。在這個新的SaveChanges方法中,我有以下代碼來查找更改的屬性,其中實體來自ChangeTracker.Entities()。
foreach (var propertyName in entity.OriginalValues.PropertyNames)
{
var originalValue = entity.OriginalValues.GetValue<object>(propertyName);
var newValue = entity.CurrentValues.GetValue<object>(propertyName);
if (!object.Equals(originalValue, newValue))
{
// Insert an auditing record.
}
}
這個問題是,originalValue總是等於newValue,即使還沒有保存到數據庫。我怎樣才能得到原始價值,以便我可以檢查財產是否已經改變?
在此先感謝!
顯示您的客戶端代碼(即實際上改變了屬性值),您的滿'的SaveChanges()'代碼可以很好的幫助。 – haim770
在檢查更改之前,您可能需要調用'context.ChangeTracker.DetectChanges' ... – qujck