因此,在我的問題,做我所提到的將進入狀態更改爲Detached不會更新保存。如果要通過將實體設置爲等於另一個對象來修改實體,則必須使用數據上下文的.Entry方法來跟蹤該實體。代碼如下所示:
//We query local context first to see if it's there.
var attachedEntity = db.Carts.Local.Find(newCart.Id);
//We have it in the context, need to update.
if (attachedEntity != null) {
var attachedEntry = _context.Entry(attachedEntity);
attachedEntry.CurrentValues.SetValues(newCart);
}
您可以找到完整的示例here。您可以在頁面底部找到它作爲最後一個代碼示例。該示例經過優化,僅更新可以更改的屬性。
然而,使用這個有幾個缺點。其中之一是,到目前爲止,實體框架不支持使用.CurrentValues.SetValues()更新導航屬性(相關實體)。這也僅適用於當前正在跟蹤要更新的實體。所以你可能需要再次調用數據庫來更新它。
你爲什麼不試試? –
我不知道如何在調試器中檢查實體狀態。我也可以做。 –
我只是設置該條目等於一個變量,並設置一個斷點? –