NHibernate Сессия и управление транзакциями в HttpModule

Я видел много реализаций в сети людей, управляющих своими сеансами NHibernate и транзакциями в HttpModule.

HttpModule:

  1. создает сеанс в начале запроса
  2. обертывает весь запрос в транзакцию
  3. фиксирует транзакцию в конце запроса

Если люди используют эту стратегию, как они обрабатывают следующий сценарий:

  1. приходит запрос
  2. получить объект из базы данных
  3. обновить объект
  4. объект не прошел проверку
  5. изменения объекта все еще сохраняются, потому что транзакция зафиксирована в HttpModule.

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

  1. написать свое подтверждение таким образом, как это ' s гарантированно преуспеет перед обновлением моего объекта домена (выводит мою проверку из моей модели домена).
  2. управляйте моей транзакцией ближе к моей бизнес-логике и отбрасывайте идею сделать это прозрачно в HttpModule. (Я видел, что довольно много сообщений рекомендуют это)

Видя, что так много людей, кажется, используют подход HttpModule, я надеюсь, что есть третий способ управления этим сценарием, о котором я не думал?

9
задан Brownie 18 September 2010 в 00:07
поделиться