检测asp.mvc上下文中实体的更改

时间:2011-04-14 11:23:58

标签: c# asp.net-mvc entity-framework

我有非常标准的情景。我从控制器发送实体到视图供用户编辑。用户按下提交按钮我从控制器中的浏览器返回实体。它现在已分离,所以我将其附加到上下文中。如何检测与数据库相比是否有更改?

1 个答案:

答案 0 :(得分:0)

当用户提交时,您需要从数据库中取回实体。有很多原因让你无法确定通过查看回来的内容来确定该做什么:

  1. 无法信任来自用户的数据。用户可以完全控制浏览器发回给您的内容,因此如果您关闭请求中的某些内容,这可能会被利用
  2. 另一位用户可能修改了相同的数据
  3. 从数据库中拉取实体很快,所以只需拉动它,设置要设置的字段和SaveChanges()

    补充:正如Eduard在下面的评论中指出的那样,看起来有一种实用方法ApplyCurrentValues来执行此操作:msdn.microsoft.com/en-us/library/dd487246.aspx