尝试使用Entity Framework 4更新实体时出错

时间:2012-01-12 15:27:51

标签: asp.net-mvc-3 entity-framework-4

我有以下编辑方法:

[HttpPost]
public ActionResult Edit(Movie movie)
{
    try
    {
        _db.ApplyCurrentValues("Movies1",movie);
        _db.SaveChanges();
        return RedirectToAction("Index"); 
     }
     catch
     {
         return View();
     }
 }

运行时我收到以下错误:

An object with a key that matches the key of the supplied object could not be found in the ObjectStateManager. Verify that the key values of the supplied object match the key values of the object to which changes must be applied.

几点:

  • 我第一次进行更新时没有收到错误,只有后续更新。
  • Movies1是我查看edmx设计器时EntitySet的名称。这是它应该是什么,还是它应该是桌子的名称(电影)?
  • 我看过关于Attach的事情,但我对这究竟是什么感到困惑。

1 个答案:

答案 0 :(得分:2)

为了应用当前值,具有该给定键的实体应存在于ObjectStateManager中。 ApplyCurrentValues州的文档

  

将提供的对象中的标量值复制到对象中   具有相同键的ObjectContext。

您可以附加实体并应用当前值。

    _db.Movies.Attach(movie);
    _db.ObjectStateManager.ChangeState(movie, EntityState.Modified);
    _db.SaveChanges();