Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Linq2SQL中更新整个对象_C#_Linq To Sql - Fatal编程技术网

C# 如何在Linq2SQL中更新整个对象

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

假设我在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();
}
我想那会容易得多

using(var db = new DataContext()) {
    db.Users.Attach(user, true);
    db.SubmitChanges();
}
true
表示“此对象已更改,需要提交”

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