Я создал объект IDbContext, который предоставляется моим реализациям IRepository. DbContext позволяет моей бизнес-логике создавать, фиксировать и откатывать транзакции и фиксировать их по мере необходимости. Он также переносит мой NHibernate ISession, поэтому моя реализация NHibernate IRepository может получить к нему доступ.
Я использую эту настройку в веб-приложении, где для каждого запроса создается один DbContext, который используется всеми репозиториями. В конце запроса я избавляюсь от ISession.
Благодаря вашему опыту или знанию стандартных практик NHibernate, допустимо ли, чтобы мой DbContext очищался и фиксировал любые невыполненные транзакции (при условии отсутствия ошибок) автоматически, когда я утилизирую и собираюсь закрыть свой сеанс?