仅更新Entity对象上更改的值

时间:2009-11-05 15:04:45

标签: asp.net-mvc entity-framework

如何自动更新我的实体对象更改的值并将其保存到db。

我有这样的行动

public ActionResult Update()
    {

      User userToUpdate = new User();
      TryUpdateModel<User>(userToUpdate,ValueProvider);
      BaseRepository.Context.AttachTo("User",userToUpdate);
      BaseRepository.Context.SaveChanges();
      return Json("");
    }
  

ValuProvider:有物品来   来自客户端作为发布数据。

此代码的问题是代码更新了所有值,但我只想更新更改的值。

如何在实体对象上找到更改的值。

3 个答案:

答案 0 :(得分:0)

两个选项:

  • 在视图中,您可以知道使用Javascript更改的值,然后您可以将该信息传递给控制器​​。
  • 您可以简单地比较之前的值(自填充视图以来已经拥有的值)并在更新数据库之前检查每个值。

我更喜欢上一个选项,因为此时您还可以检查数据验证。

答案 1 :(得分:0)

这对您的数据访问代码来说确实是一个问题,而不是与您的控制器有关。选择一个为您处理此问题的ORM并忘记问题。

答案 2 :(得分:0)

您应该检查ObjectContext.ApplyPropertyChanges方法 它假设做你要求的...... msdn