NHibernate список / подробные представления, используя разные сеансы, но изменяя один и тот же объект - PullRequest
1 голос
/ 16 августа 2010

Мое приложение состоит из двух представлений, списка и деталей.

Обычно, когда пользователь дважды щелкает строку в списке, я передаю выбранный объект элемента в подробный вид.

Каждый экземпляр представления имеет свой собственный сеанс NHibernate.

Когда пользователь изменяет свойства объекта, мой список должен отражать изменения, для этого я реализовал интерфейс INotifyPropertyChanged.

Когда я пытаюсь сохранить изменения из представления сведений, я получаю «Недопустимая попытка связать коллекцию с двумя открытыми сеансами». Я знаю, что означает это исключение, и знаю, почему это происходит.

Каков наилучший способ / шаблон, чтобы избежать этой проблемы, чтобы связывание данных работало нормально, а NHibernate также счастлив.

Большое спасибо!

1 Ответ

3 голосов
/ 16 августа 2010

Это то, что мы используем для уведомлений об обновлениях между сессиями: http://github.com/ayende/Effectus/blob/master/Effectus/Infrastructure/EventPublisher.cs

Вы никогда не должны делиться постоянными объектами между сеансами. Вместо этого передайте Ids.

...