记录不更新- Linq SQLite

本文关键字:Linq SQLite 更新 记录 | 更新日期: 2023-09-27 17:50:13

给出以下代码:

[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,如果它有区别)

记录不更新- Linq SQLite

问题是您的上下文不知道o。当您执行以下行时:

query = o;

查询变量现在指向上下文不知道的对象。记住,上下文跟踪对象,而不是指针。你需要找到一种方法来确保上下文在跟踪你的对象。

如果你正在使用实体框架,应该是像db2.Attach(o)