为什么我需要在另一个对象上调用ApplyCurrentValues之前获得一个旧实体
本文关键字:实体 一个 一个对象 ApplyCurrentValues 调用 为什么 | 更新日期: 2023-09-27 18:04:55
看起来这段代码不工作,除非我包括第一行代码片段,这是不是引用之后的任何地方?这是ApplyCurrentValues
方法的工作原理吗?
_entities.Contacts.FirstOrDefault(c => c.Id == contactToEdit.Id);
_entities.Contacts.ApplyCurrentValues(contactToEdit);
_entities.SaveChanges();
return RedirectToAction("Index");
此代码编辑联系人记录并保存到数据库。
下面是整个方法:
[HttpPost]
public ActionResult Edit(Contact contactToEdit)
{
if (!ModelState.IsValid)
{
return View();
}
try
{
_entities.Contacts.FirstOrDefault(c => c.Id == contactToEdit.Id);
_entities.Contacts.ApplyCurrentValues(contactToEdit);
_entities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
根据我的理解,对象上下文需要知道哪些字段发生了变化。
只有当上下文保存了原始值的记录时,字段才会更新为。
第一行似乎有一个副作用,使对象上下文知道的原始值(通过加载实体)。
看看这两个答案。