假设我在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();
}
我认为这会容易得多。
答案 0 :(得分:2)
using(var db = new DataContext()) {
db.Users.Attach(user, true);
db.SubmitChanges();
}
true
说“这个对象有变化,需要提交”。
唯一的缺点是它现在不知道哪些值已更改,因此会尝试更新所有值。还有一个Attach
采用旧的和新的,但旧的不应该来自你正在谈论的数据上下文。