NHibernate 3, HttpModule и ошибки

ЗАДНИЙ ПЛАН:

Создание запуска веб-приложения с NH3 с использованием HttpModule для управления созданием / фиксацией / откатом транзакции и сеанса. В случае возникновения ошибки я хотел бы вернуть простое сообщение пользователю, но откатить транзакцию. Подключение к событию context.Error позволяет легко выполнить откат при возникновении исключения, однако это никогда не будет вызвано, поскольку исключения перехватываются, отображая дружественное сообщение пользователю.

Из-за проблемы, описанной выше, я собираюсь создать сценарий настраиваемой единицы работы и сохранить его в контексте HTTP для запроса. Если возникает ошибка, установите флаг RollbackRequired и пусть единица работы выполнит откат на основе этого. Сохранение в сеансе в HttpContext - это то же самое, что и использование CurrentSessionContext?

Если у кого-то есть другие мысли, я буду великолепен.

Спасибо.


person TheITGuy    schedule 15.08.2011    source источник


Ответы (1)


Сохранение в сеансе в HttpContext - это то же самое, что и использование CurrentSessionContext?

Да, это в значительной степени то, что делает WebSessionContext.

Если у кого-то есть другие мысли, я буду великолепен.

Если вы поймали исключение, почему бы вам тоже не откатить его?

ISession.Transaction.WasCommitted и ISession.ITransaction.WasRolledback дают представление о том, была ли транзакция отменена / зафиксирована. Вы можете зафиксировать его в своем HttpModule, если он не откатился и не зафиксирован.

person Thilak Nathen    schedule 15.08.2011
comment
Спасибо за ответ. Откатывать прямо в сервисе или слоях не хотелось. Мне пришло в голову, что лучше оставить это реализации HttpModule / UoW. - person TheITGuy; 15.08.2011