linq to sql вставка объекта после создания в памяти - PullRequest
0 голосов
/ 20 мая 2009

Я создаю систему бронирования для пункта проката автомобилей.

У меня есть объект Booking l2s, в котором есть объекты Car и Location (и последующие поля FK CarID / LocationID).

На первом этапе процесса бронирования я создаю класс Booking (). Это передается в сеансе на следующие страницы.

Когда пользователь продолжает процесс, свойства CarID и LocationID устанавливаются, однако, поскольку объект Booking не был сохранен в базе данных, я не могу, например, ссылаться на Booking.Car.CarModel.

Итак, я делаю это явно:

Booking.Car = DB.Car.Where(x => x.id == Booking.CarID).Single();

и т.д.

Когда приходит время сохранить бронирование, выдается:

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

Так что, похоже, он думает, что сущность Booking не нова. Если я попытаюсь обнулить значения, которые я установил explicity (Booking.Car = null), он выдаст еще одну ошибку:

Была предпринята попытка удалить связь между автомобилем и бронированием. Однако один из внешних ключей отношения (Booking.CarID) не может быть установлен равным нулю.

А теперь я в тупике ...

<ч />

Окончательное решение

То, что я закончил (после того, как попробовал кучу разных вещей), было незадолго до сохранения бронирования, я перезагружаю объекты Car и Location из текущего контекста. Не совсем эффективно, но ме.

1 Ответ

0 голосов
/ 20 мая 2009

Я вполне уверен, что у вас проблемы с обработкой данных. Вы создаете один на запрос? Если ответ «да», проблема в том, что ваши объекты связаны с разными контекстами. Вам придется отсоединить их от контекста, который вы использовали для извлечения их из базы данных, и заново присоединить их к контексту, который вы хотите использовать для их хранения.

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