Ошибка вставки в Linq to SQL - PullRequest
       18

Ошибка вставки в Linq to SQL

0 голосов
/ 24 октября 2009

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

Это сообщение об ошибке, которое я получаю при попытке выполнить примерно следующее:

1 DataContext db = new DataContext();
2 o = new object();
3 o.association = db.GetAssociatedObject(pId);
4 db.objects.InsertOnSubmit(o);
5 db.SubmitChanges();

Этот код создает новый объект, заполняет ассоциацию с существующим объектом, а затем вставляет новый объект. Когда я закомментирую строку 3 + 4, ошибка исчезнет. Что вызывает ошибку? Могу ли я не делать вставку со связанными объектами?

Ответы [ 2 ]

0 голосов
/ 25 октября 2009

Сообщение об ошибке вводит в заблуждение. Это немного сложнее, но я нашел ошибку.

У меня есть метод, который пытается сохранить отдельный объект и создать для него ассоциации. Этот метод создает новую прикрепленную копию объекта и копирует все элементы. Затем он создает ассоциацию.

Скажем, у меня есть объект А, который отделен. Мой метод пытается прочитать его из базы данных, чтобы у меня была прикрепленная версия. Скажем, это объект А. Обновляется со всеми членами, которые изменились. A должен получить ассоциацию с объектами типа C через отношение многие ко многим, называемое B: A <= B => C

Я присвоил отдельную копию A B. Это вызвало исключение. Как только я назначил правильный экземпляр A, он заработал.

0 голосов
/ 24 октября 2009

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

Комментирование строки 4 должно решить проблему, но оставит вас с правильной связью между o и o.association.

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