Я видел много реализаций в Интернете людей, которые управляют своими сеансами и транзакциями NHibernate в HttpModule.Управление сеансом и транзакцией NHibernate в HttpModule
HttpModule:
- создает сессию в начале запроса
- заворачивает весь запрос в сделке
- совершает сделку в конце запроса
Если люди используют эту стратегию, то как они обрабатывают следующий сценарий:
- запрос приходит в
- получить объект из базы данных
- объект обновление
- объект не проходит проверку
- изменения объекта все еще сохранялось, поскольку сделка совершается в HttpModule.
Похоже, что нет хорошего способа отменить транзакцию в описанном выше сценарии. Единственный план, который я могу придумать, заключается в следующем:
- Напишите мою проверку таким образом, чтобы она была успешной, прежде чем обновлять объект моего домена (берет мою проверку из моей модели домена).
- управляет моей транзакцией ближе к моей бизнес-логике и выбрасывает идею прозрачности в HttpModule. (Я видел довольно много сообщений, рекомендую это)
Видя, как многие люди, кажется, используют подход HttpModule. Я надеюсь, что есть третий способ управления этим сценарием, о котором я не думал ?
Я также приходит к тому же вопросу в последнее время. Я начинаю с NHibernate по некоторому проекту. Мой последний подход - использование Autofac для IOC и использование HttpRequestScope для сеансов. И все операции транзакций на уровне репозитория Business. Возможно, это не самое лучшее, но сейчас оно работает нормально. – Elph
Проверка изменений вместо проверки изменений, применяемых к объекту, намного проще. – Paco
Вы нашли ответ на этот вопрос? – Rippo