[英]record not updating - Linq SQLite
給出以下代碼:
[HttpPost]
public ActionResult Edit(int id, Table o)
{
try
{
var query = db2.Table.Single(i => i.RecordID == o.RecordID);
query = o;
db2.SubmitChanges();
return RedirectToAction("Index");
}
catch { return View(); }
}
記錄未按預期更新。 它返回沒有任何錯誤,但沒有執行所需的更改。這很奇怪,因為如果我這樣做:
query.propertyToChange = 4;`
甚至:
query.propertyToChange = o.propertyToChange;
它已經可以了。 和:
db2.insertonsubmit(o);
由於一個字段應該是唯一的,只會給出一個錯誤(並且這沒有任何意義,因為我正在更新現有行並傳遞相同的鍵值),因此它肯定假設我正在嘗試添加一個新字段具有相同的唯一密鑰。
有人可以指出為什么我不能將更改后的值應用於現有行嗎? (如果有區別,我正在使用SQLite)
問題是您的上下文不了解o
。 當您執行以下行時:
query = o;
查詢變量現在指向您的上下文不知道的對象。 請記住,上下文跟蹤對象,而不是指針。 您需要找到一種方法來確保上下文正在跟蹤您的對象。
如果您使用的是Entity Framework,則應該類似於db2.Attach(o)
。
另一種可能的解決方案是復制所有值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.