[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相关问答推荐

Windows 命令行中的/p:是什么意思

无法为媒体类型application/x-www-form-urlencoded生成样本

使用 Asp.Net MVC 和 KnockoutJS 处理日期

如何防止 IISExpress 和我的网站文件夹弄乱我的文档文件夹?

如何使用 executeReader() 方法仅检索一个单元格的值

使用进程外会话状态的 ASP.NET 应用程序中的 SQL Server 连接问题

无法读取配置部分system.servicemodel,因为它缺少部分声明

我可以根据角色隐藏/显示 asp:Menu 项吗?

使用 Elmah 处理 Web 服务中的异常

为什么 Asp.Net Identity IdentityDbContext 是一个黑盒?

温莎城堡有什么缺点吗?

ASP.NET MVC4 异步控制器 - 为什么要使用?

LINQ to Entities 无法识别 MVC 4 中的System.String ToString()方法

确定哪个 w3wp.exe 进程属于 Windows 7 / IIS7.5 中的哪个 App Pool?

如何从 Asp.net Mvc-3 发送邮箱?

asp.net 有控制台日志(log)吗?

如何判断用户代理是 ipad 还是 iphone?

您使用哪个 .NET Memcached 客户端,EnyimMemcached 与 BeITMemcached?

aspnet_compiler 发现错误版本的 System.Web.WebPages 1.0.0.0 而不是 2.0.0.0

ModelClientValidationRule 冲突