NHibernate - найдены общие ссылки на коллекцию - PullRequest
1 голос
/ 03 марта 2011

В моем приложении веб-форм ASP.NET я получаю указанное выше исключение, а также:
- На коллекцию с cascade = "all-delete-orphan" больше не ссылался экземпляр владельца объекта: Persistence.Product.ModelMap
- сбор был обработан дважды flush ()
- Найдены общие ссылки на коллекцию: Persistence.Product.ModelMap
когда я получаю продукты. Это происходит только тогда, когда у меня два или более запросов попадают на сервер одновременно. Я использую один сеанс на запрос.

Свойство ModelMap определяется в XML-файле Hibernate в определении сопоставления продуктов следующим образом:

<bag name="ModelMap" table="MapProductModel" cascade="all-delete-orphan" lazy="true" inverse="true" where="IsDeleted=0">
  <key column="fkProductId" />
  <one-to-many class="MapProductModel" />
</bag>

Это происходит в следующей строке кода

IList<T> itemList = criteria.List<T>();

При получении товара.

Любая помощь с благодарностью, Google на самом деле ничего не нашел.

Ответы [ 2 ]

1 голос
/ 03 марта 2011

ASP.NET является многопоточным, поэтому запросы будут поступать в несколько потоков в одном HTTP-запросе. Вы должны использовать контекст веб-сессии NHibernate (или другие средства); создание нового сеанса для каждого HTTP-запроса недостаточно. Смотри http://nhibernate.info/doc/nhibernate-reference/architecture.html#architecture-current-session

1 голос
/ 03 марта 2011

критериев. Список запускает сеанс сброса, который заставляет NH пройти по всем вашим объектам и выяснить, какие команды должны быть отправлены в БД. Любая другая очистка сеанса, вероятно, вызовет то же исключение.

Что-то в том, как вы работаете с ModelMap, приводит к прерыванию цикла очистки. Когда у меня появляются эти ошибки, я обычно сужаю их, комментируя места, где я ссылаюсь на коллекцию, одну за другой. После того, как вы узнаете, как исправить неправильную линию, все должно быть легко (надеюсь)

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