Я видел много реализаций в сети людей, управляющих своими сеансами NHibernate и транзакциями в HttpModule.
HttpModule:
- создает сеанс в начале запроса
- обертывает весь запрос в транзакцию
- фиксирует транзакцию в конце запроса
Если люди используют эту стратегию, как они обрабатывают следующий сценарий:
- приходит запрос
- получить объект из базы данных
- обновить объект
- объект не прошел проверку
- изменения объекта все еще сохраняются, потому что транзакция зафиксирована в HttpModule.
Похоже, что в приведенном выше сценарии нет хорошего способа откатить транзакцию. Единственный план, который я могу придумать, - это:
- написать свое подтверждение таким образом, как это ' s гарантированно преуспеет перед обновлением моего объекта домена (выводит мою проверку из моей модели домена).
- управляйте моей транзакцией ближе к моей бизнес-логике и отбрасывайте идею сделать это прозрачно в HttpModule. (Я видел, что довольно много сообщений рекомендуют это)
Видя, что так много людей, кажется, используют подход HttpModule, я надеюсь, что есть третий способ управления этим сценарием, о котором я не думал?
задан Brownie 18 September 2010 в 00:07
поделиться