Как обновить весь объект в Linq2SQL - PullRequest
2 голосов
/ 04 декабря 2011

Предположим, у меня есть такой метод в 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 Ответ

2 голосов
/ 04 декабря 2011
using(var db = new DataContext()) {
    db.Users.Attach(user, true);
    db.SubmitChanges();
}

true говорит, что «этот объект имеет изменения и должен быть зафиксирован».

Единственный недостаток этого заключается в том, что теперь он не знает , какие значения изменились, поэтому постараюсь обновить их все.Существует также Attach, который берет старое и новое, но старое не должно быть из контекста данных, с которым вы разговариваете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...