这段代码有什么问题吗?我的实体没有得到更新。
public ActionResult UpdateNota(string notas)
{
if (Request.IsAjaxRequest())
{
RegistroEntities registroEntities = new RegistroEntities();
Nota nota = JsonConvert.DeserializeObject<Nota>(notas);
registroEntities.AttachTo("Notas",nota);
registroEntities.ApplyCurrentValues("Notas", nota);
registroEntities.SaveChanges(SaveOptions.DetectChangesBeforeSave);
return Json(new {success=true});
}
return View();
}
答案 0 :(得分:1)
查看Entity Framework documentation entitled Working with Objects,特别是Attaching and Detaching Objects上的部分。
在这种情况下,您正在调用AttachTo
,这会将实体置于Unchanged
状态。
然后你调用ApplyCurrentValues
,它将实体中的所有值复制到它自己的值上;任何具有不同值的值都标记为已修改。 (请注意,由于每个值只是复制在自身上,因此 none 具有不同的值,因此实体保持Unchanged
状态。
最后,您致电SaveChanges
。由于实体处于Unchanged
状态,因此无需执行任何操作。
本答案开头的MSDN文档链接包含有关正确执行此操作的方法的信息(请注意,添加实体使用与更新实体不同的解决方案)。