簡體   English   中英

記錄未更新-Linq SQLite

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM