Nhibernate не обновляет каскадные отношения на Win Server 2008

Мы используем 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 ответ

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

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

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

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

Филипе

Другие вопросы по тегам