[英]Can't update object in Entity Framework
我正在嘗試通過ASP.NET MVC 5應用程序中的EF 6更新表。
我沒有收到任何錯誤消息或異常,但沒有任何內容保存到數據庫中。 我懷疑該對象不是IQueryable
,因此無法被EF跟蹤(如果我的理解正確的話)。
public async Task Work(Plan newPlan)
{
var existingPlan = await this._planQuery.GetPlan(112);
if (existingPlan != null)
{
await this._planCommand.UpdatePlan(newPlan, existingPlan))
}
}
兩種相關的方法是
internal async Task<Plan> GetPlan(int id)
{
return await base.DataContext.Plans.SingleAsync(a => a.Id == id);
}
internal async Task<bool> UpdatePlan(Plan newPlan, Plan existingPlan)
{
existingPlan.LastEditDate = DateTime.Now;
existingPlan.PlanName = newPlan.PlanName;
existingPlan.Website = newlan.Website;
if (!await base.SaveToDatabase())
return false;
return true;
}
這就是我正在做的事情,如果我理解正確的話,我的期望是:
接收具有各種屬性值的對象。 這需要更新現有的數據庫條目,當前用112進行硬編碼(僅用於測試)
查看ID為112的計划是否存在(確實存在)。 我們將其命名為existingPlan
。 我希望EF能夠跟蹤對此的任何更新
由於該計划存在,請調用UpdatePlan
,以提供newPlan
和existingPlan
將相關的新值從新newPlan
“映射”到existingPlan
由於EF應該跟蹤現有計划(現已更新),因此只需保存
我在這里想念什么?
我注意到的檢索Plan
實例通過發生_planQuery
對象,而通過發生更新_planCommand
對象。
這些可能不會共享相同的DbContext
實例。 如果是這種情況,則在執行更新的DbContext
不會跟蹤Plan
實例,因此不會執行更新語句。
要解決,請確保通過相同的DbContext
實例進行檢索和更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.