如何在Linq2SQL中更新整个对象

时间:2011-12-03 21:06:31

标签: c# linq-to-sql

假设我在MVC中有类似的方法

public void UpdateUser(User user)
{
  DataContext db = new DataContext();
  User u = db.Users.First(t=>t.UserId = user.UserId);
  u.Name = user.Name;
  u.LastName = user.LastName;
  db.SubmitChanges();
}

如果我们开始认为我们的属性超过了Name和LastName,那么这个过程变得很麻烦,我想知道是否有办法轻松地协调这两个对象并快速更新它。

也许是这样的:

public void UpdateUser(User user)
{
  DataContext db = new DataContext();
  User u = db.Users.First(t=>t.UserId = user.UserId);
  u.MergeWith(user);
  db.SubmitChanges();
}

我认为这会容易得多。

1 个答案:

答案 0 :(得分:2)

using(var db = new DataContext()) {
    db.Users.Attach(user, true);
    db.SubmitChanges();
}

true说“这个对象有变化,需要提交”。

唯一的缺点是它现在不知道哪些值已更改,因此会尝试更新所有值。还有一个Attach采用旧的和新的,但旧的不应该来自你正在谈论的数据上下文。