Как мне узнать, является ли объект linq to sql новым, измененным или неизменным? - PullRequest
4 голосов
/ 02 июня 2010

У меня есть один класс linq to sql. Я хотел бы определить, является ли он новым (что означает, что вставка будет сделана) или есть какие-либо ожидающие изменения (обновление будет выполнено). Я понимаю, что могу сделать это, используя класс partial и подключаясь к событиям при изменении для каждого свойства. Тем не менее, это много обслуживания для класса, который постоянно меняется.

Есть ли лучший способ?

Ответы [ 2 ]

7 голосов
/ 02 июня 2010

Вы можете проверить через DataContext класс.

Сначала проверьте ObjectTrackingEnabled свойство на DataContext. Если он возвращает false, то объект не отслеживается контекстом.

Затем вызовите метод GetChangeSet для DataContext. Оттуда сравните ссылки, выставленные свойствами Deletes, Updates и Inserts с вашим объектом.

Если ссылка найдена в каком-либо из этих списков, тогда ваш объект отслеживается этим списком, и вы можете перейти оттуда.

0 голосов
/ 03 июня 2010

Проверьте, равен ли идентификатор объекта 0.

if someId = 0
  Insert();
else
  Update();

Simples

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