[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附加和跟踪的.

推荐答案

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

如果您知道数据库中已经存在一个实体,但可能已经对其进行了更改,那么您可以告诉上下文附加该实体,并将其状态设置为"已修改".

Asp.net相关问答推荐

如何正确配置 IHttpModule?

如何在现有数据库中创建 ASP.Net Identity 表?

如何在 IIS 上配置 Web Deploy 发布功能,以便开发人员可以发布?

系统日期时间?与 System.DateTime

如何删除字符串的定义部分?

jQuery隐藏字段

SqlBulkCopy 超时

在 ASP.NET 中更改错误消息的语言

Directory.Exists 不适用于网络路径

如何在集线器类之外获取 SignalR 用户连接 ID?

Webapi、Webhost和Owin的关系

从 ASP.NET 中的 POST 方法中检索数据

可空日期时间转换

如何在 ASP.NET 中仅在调试模式下执行代码

如何删除asp.net中的特定会话?

具有自定义报告创建能力的最佳 ASP.NET 报告引擎

如何获取程序集的最后修改日期?

脚本管理器控制实际上是做什么的?

如何使用 encodeURIComponent() 解码在 JS 中编码的 HTML?

避免在 ASP.NET MVC 中使用会话状态是一种好习惯吗?如果是,为什么以及如何?