C# 如何在Linq2SQL中更新整个对象
假设我在MVC中有这样一个方法C# 如何在Linq2SQL中更新整个对象,c#,linq-to-sql,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和Last
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();
}
我想那会容易得多
using(var db = new DataContext()) {
db.Users.Attach(user, true);
db.SubmitChanges();
}
true
表示“此对象已更改,需要提交”
唯一的缺点是,它现在不知道哪些值已更改,因此将尝试更新所有值。还有一个Attach
,它接受旧的和新的,但是旧的不应该来自您正在谈论的数据上下文