Я создаю решение в ASP.NET MVC 2, NHibernate и DDD.Я использую модель типа Half CQRS.
Контроллер ASP.NET отправляет проверенные сообщения на уровень обслуживания, который обновляет состояние объекта Domain.У меня есть «События» в доменной рассылке, которые затем перехватываются «обработчиками событий», которые воздействуют на них.Каждый из этих обработчиков событий имеет доступ к уровню репозитория и может зафиксировать состояние объекта домена.
Обработчики событий также вставляют записи непосредственно в таблицы на основе отчетов, используя (не NHibernate) репозиторий.Обработчики событий могут также выполнять операции, не связанные с базой данных, такие как отправка электронных писем.
Обработчик событий также может изменять состояние объекта, создавая тем самым новый набор событий.
Как я могу убедиться, что все операции с базой данных, которыепроисходят во время одного запроса asp.net внутри одной транзакции.Я читал некоторые блоги (например, Кевин Уильямс , Мэтт Врок и Дэйви Брайон ) и получил информацию о том, как запустить объект Session в Begin и EndЗапрос (снова я буду использовать Структурную карту здесь), но не уверен, как транзакция поддерживается.Это усугублялось тем фактом, что начальный и конечный запросы могут вызываться в разных потоках.
Мой класс репозитория принимает NHibernate ISession в своем параметре.Если я создаю ISession как Hybrid Scope (StructureMap), это гарантирует, что во время запроса параметр ISession, передаваемый StructrueMap, останется таким же.
Пожалуйста, сообщите, а также дайте мне знать, если мой вопрос неясен.
Спасибо,
Мар
Мар