C# 为什么在调用另一个对象上的ApplyCurrentValues之前需要获取旧实体?
看起来这段代码不起作用,除非我包含代码段的第一行,它是之后没有被引用的?这就是C# 为什么在调用另一个对象上的ApplyCurrentValues之前需要获取旧实体?,c#,asp.net-mvc,entity-framework-4,linq-to-entities,C#,Asp.net Mvc,Entity Framework 4,Linq To Entities,看起来这段代码不起作用,除非我包含代码段的第一行,它是之后没有被引用的?这就是ApplyCurrentValues方法的工作原理吗 _entities.Contacts.FirstOrDefault(c => c.Id == contactToEdit.Id); _entities.Contacts.ApplyCurrentValues(contactToEdit); _entities.SaveChanges(); return RedirectToAction("Index"); 此
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();
}
}
根据我的理解,对象上下文需要知道哪些字段发生了变化。
只有在上下文保留原始值记录的情况下,字段才会更新 第一行似乎有一个副作用,即使对象上下文知道原始值(通过加载实体) 看看答案