Это должен быть частый вопрос, но не на SO еще, так что кажется. Я использую Linq для SQL для приложения, которое допускает различные изменения данных в моей модели в памяти, и изменения затем будут помещены в очередь для асинхронной обработки. Итак, я не беспокоюсь об обновлениях (пока). Изменения в различных частях данных могут быть сделаны с помощью модальных всплывающих окон на веб-странице. Некоторые из них основаны на сетке, другие - просто атрибуты. У меня проблема с изменениями, которые не выдерживают циклов обратной передачи. Очевидно, что я не хочу ничего хранить в базе данных до тех пор, пока не будут сделаны все изменения, и пользователь отправит страницу.Linq to SQL, postbacks Ajax и состояние страницы в ASP.NET
Маршрут, который я выбрал до сих пор:
- Я отключил отложенные загрузки
- создать [сериализуемый] частичный класс для моего корневого объекта
- Я положил вещи в сессию и извлечение его в событии onload
Это, похоже, работает в принципе. Однако, когда я пытаюсь обновить некоторые из детских свойств после извлечения объекта из сеанса
p.PhysicianSpecialties[0].physician_specialty_code =
ddlSpecialty.SelectedItem.Value;
Я получаю эту ошибку:
Operation is not valid due to the current state of the object.
ошибка вызвана этим вызов метода в созданном Linq сеттер метод:
this.SendPropertyChanging();
Другие свойства обновляется только штрафом:
p.PhysicianNames[0].first_name = txtFirstName.Text.ToUpper();
Это не вызывает ошибки.
Мои вопросы: Я в корне ошибаюсь? Есть ли лучший способ сделать это? Что вызывает ошибку?
Обновление: Исключение составляет «System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException». Я думаю, I am on to something, но пока не знаю решения.
Что вы связываете с выпадающим списком? – cdonner