Nhibernate не обновляет каскадные отношения на Win Server 2008 - PullRequest
1 голос
/ 30 августа 2010

Мы используем NHibernate с отображением Fluent для создания приложения WebForms.

В нашей модели мы имеем простое отношение References с набором Cascade.All(). Когда мы сохраняем сущность, NH ведет себя как ожидалось, и 1) сохраняет ссылочную сущность, 2) обновляет родительскую сущность, устанавливая дочерний ключ.

Развертывание этой же версии на нашем производственном сервере (Win Server 2008) и указание приложения на одну и ту же базу данных, однако, приводит к другому выводу. NH 1) сохраняет ссылочную сущность и .. и .. все, больше ничего не происходит !!

Я знаю, что наши тестовые и производственные среды должны быть одинаковыми и т. Д., И т. Д., Но мы развертываем прямо сейчас, и я просто не могу понять, как это может происходить.

Существует ли какая-либо известная проблема с NH в Win 2008 Server относительно разрешений на сборку или что-то подобное? Похоже, прокси не работает должным образом по какой-то причине, но я действительно не могу сказать, почему!

РЕДАКТИРОВАНИЕ 1: Анализ файлов журнала NH Я обнаружил, что NH не замечает, что указанное свойство изменилось в Win Server 2008. Почему? Понятия не имею, но похоже, что проблема с прокси все больше и больше.

Любая помощь очень ценится.

Филип

1 Ответ

0 голосов
/ 31 августа 2010

Я наконец-то нашел причину проблемы.NH не обновлял отношения, потому что у него не было транзакции, покрывающей операторы.

На первый взгляд, это не выглядит логичным, но есть другие ситуации, когда NH ведет себя правильно, только если транзакция открыта(Например: NHibernate FlushMode Auto не очищается перед поиском ).У нас была такая ситуация в других проектах, и теория подходит.

Но как насчет Windows Server 2008?На самом деле проблема была в нашем файле web.config с IIS 7. Поскольку мы используем автоматический контроль транзакций с дизайном OpenSessionInView, мы регистрируем элемент httpModules.Но в IIS 7 мы должны зарегистрировать элемент modules, а у нас его не было.Поскольку он не был настроен, у нас не было транзакций, и без транзакций все не работает.

Извлеченный урок # 1: более чем когда-либо транзакции ДОЛЖНЫ при использовании NHibernate.Извлеченный урок №2: никогда не отключайте сообщения о совместимости IIS (почему кто-то это сделал?).

Filipe

...