Asp.net mvc 仅更新实体对象上更改的值

Asp.net mvc 仅更新实体对象上更改的值,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,如何自动更新实体对象的更改值并将其保存到数据库中 我有这样的行为 public ActionResult Update() { User userToUpdate = new User(); TryUpdateModel<User>(userToUpdate,ValueProvider); BaseRepository.Context.AttachTo("User",userToUpdate); BaseRepository.

如何自动更新实体对象的更改值并将其保存到数据库中

我有这样的行为

public ActionResult Update()
    {

      User userToUpdate = new User();
      TryUpdateModel<User>(userToUpdate,ValueProvider);
      BaseRepository.Context.AttachTo("User",userToUpdate);
      BaseRepository.Context.SaveChanges();
      return Json("");
    }
public ActionResult更新()
{
User userToUpdate=新用户();
TryUpdateModel(userToUpdate,ValueProvider);
BaseRepository.Context.AttachTo(“User”,userToUpdate);
BaseRepository.Context.SaveChanges();
返回Json(“”);
}
ValuProvider:有没有随附的物品 作为post数据从客户端发送

这段代码的问题是代码更新了所有的值,但我只想更新更改后的值

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

两个选项:

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

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

这确实是数据访问代码的问题,与控制器无关。选择一个能为您处理此问题的ORM,然后忘掉这个问题。

您应该检查ObjectContext.ApplyPropertyChanges方法 它应该按照你的要求去做。。。

感谢您的回答,我想再问一个问题:如何在实体对象上找到更改的值。