DBContext.Entry做了什么?

时间:2013-02-23 21:12:33

标签: asp.net asp.net-mvc entity-framework dbcontext

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

此操作接收电影模型并在数据库中更新 但我无法弄清楚如何 movie对象没有附加到db,那么实体框架如何知道db中哪一行应该更新?

我确信Entry方法与它有关,但我真的不知道这个方法的作用。我读到它提供了信息,但我无法理解如何只更改State附加和跟踪的条目的DBContext

1 个答案:

答案 0 :(得分:25)

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

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