Linq 2 SQL: обновление записи через веб-сервис - PullRequest
2 голосов
/ 08 сентября 2011

у меня бизнес класс.В этом бизнес-классе есть:

  1. контекст для доступа к базе данных (через .dbml)
  2. Некоторые методы

A SaveUser(User user) метод из этогоБизнес-класс вызывается веб-сервисом.Этот метод получает модифицированный объект User.Как я могу обновить запись в базе данных по значению от объекта, полученного в качестве параметра (значения полей имеют ожидаемые значения)?

Я пробовал это:

context.Users.Attach(user); 
context.SubmitChanges();

Я пытался безпоследняя строка, такая же ... без изменений в базе данных.

Есть идеи?

Спасибо,

Обновление 1

public class RightManager
    {
        private readonly DBDataContext dc;

        public RightManager()
        {
            dc = new DBDataContext();
        }

        public User GetUser(int id)
        {
            User user = dc.GetTable<User>()
                .Where(x => x.Id == id && x.IsEnable == true)
                .SingleOrDefault<User>();

            return user;
        }                     

        public void SaveUser(User user)
        {
            dc.Users.Attach(user);
        }

    }

Ответы [ 2 ]

1 голос
/ 08 сентября 2011

Конечно, объект, который вы получаете по аргументу, не является объектом пользователя. Вы должны получить его из контекста (обычно по Id), обновить требуемые свойства и затем отправить.

public void SaveUser (User user) {
    var userToUpdate = context.Users.Where(u => u.Id == user.Id).Single();
    userToUpdate.FirstName = user.FirstName;
    userToUpdate.LastName = user.LastName;

    context.SubmitChanges();
}
0 голосов
/ 08 сентября 2011

Вы можете использовать одну из перегрузок метода присоединения.

Смотрите этот пост: http://blogs.msdn.com/b/dinesh.kulkarni/archive/2007/10/08/attach-if-you-have-something-detached.aspx

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