37
[HttpPost]
public ActionResult Edit(Movie movie)
{
    if (ModelState.IsValid)
    {
        db.Entry(movie).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(movie);
}

这个动作接收一个电影模型并在数据库中更新它。
但我不知道怎么做。
movie对象未附加到数据库,那么实体框架如何知道数据库中的哪一行应该被更新?

我确信 Entry 方法与它有关,但我真的不知道这个方法是做什么的。我读到它提供了信息,但我无法理解如何仅通过更改State条目的 来附加并由DBContext.

4

1 回答 1

34

它只是将实体附加到 dataContext。否则,您将不得不使用主键搜索实体,然后编辑该值并保存它。

如果您有一个您知道数据库中已经存在但可能已对其进行更改的实体,那么您可以告诉上下文附加该实体并将其状态设置为已修改。 http://msdn.microsoft.com/en-US/data/jj592676

于 2013-02-23T21:15:15.397 回答