爲了更好地說明我的觀點,我簡化了代碼。我需要有一些業務邏輯,我測試一個屬性是否已經從a更改爲b。我面臨的問題是我正在操作的實體附加到我的DBContext。如果我在我引用的一個更新屬性的另還更新:實體框架在內存實體中與保存的實體進行比較
....
var oldEntity = context.Find(x);
var updatedEntity = context.Find(x);
//here updatedEntity.IntProperty is 6
updatedEntity.IntProperty = 7;
//here both oldEntity.IntProperty and updatedEntity.IntProperty
//are now 7 so my test isn't hit
if(oldEntity.IntProperty != updatedEntity.IntProperty &&
updatedEntity.IntProperty == 7)
{
....
有一些簡便的方法做我想做的,同時使連接到的DbContext這個實體的比較?
您可能想看看ObjectStateManager。它緩存加載的屬性。請參閱http://msdn.microsoft.com/en-us/library/system.data.objects.objectstatemanager.aspx – Andez
我正在使用DBContext而不是ObjectContext。有沒有辦法從DBContext訪問ObjectStateManager? –
@BenTidman將您的DbContext轉換爲具有基礎ObjectContext的IObjectContextAdapter,然後使用其屬性ObjectStateManager。 –