0
參考 - How to get original values of an entity in Entity Framework? - 我嘗試提取EF中實體的原始值。但ObjectStateManager.GetOBjectStateEntry給出實體的修改值。我錯過了什麼?跟蹤多層/層級環境中實體的原始值
我在多層環境中使用EF 4.0(POCO實體)。
public bool Update(IMessage objMessage)
{
object ob = objMessage.GetMaster();
appSancAdvice _entity = ob as appSancAdvice;
using (var context = new BISEntities())
{
context.appSancAdvices.Attach(_entity);
ObjectStateEntry objectState = context.ObjectStateManager.GetObjectStateEntry(_entity);
objectState.ChangeState(System.Data.EntityState.Modified);
// this is giving the modified value of _entity
var originalValues = context.ObjectStateManager.GetObjectStateEntry(_entity).OriginalValues["sancstatus_id"];
int _i = context.SaveChanges();
return (_i > 0) ? true : false;
}
}
謝謝格特!那麼如何在一個部分類中擴展該實體來添加一個相同實體類型的對象,以便在需要時可以保存檢索到的實體的副本。 會影響性能嗎? –
我不會那樣做。它讓你的班級做事情是上下文的責任。保持課程簡單(單一責任)是面向對象設計的核心原則之一。如果要頻繁比較/複製舊值和新值,請爲其創建服務類。 –
Gert!請你詳細說明一下,如何?這種設計的簡要概述。 –