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