Предположим, что Book и Author представляют собой совокупные корни в моей модели.
В прочитанной модели у меня есть таблица AuthorsAndBooks, которая представляет собой список авторов и книг, соединенных Book.AuthorId
При запуске события BookAdded я хочу получать данные Author для создания новой строки AuthorsAndBooks.
Поскольку Book - это сводный корень, информация о Author не включена в событие BookAdded. И я не могу включить его, потому что Author root не имеет геттеров (в соответствии с рекомендациями всех примеров и сообщений о CQRS и Event Sourcing).
Обычно я получаю два типа ответов по этому вопросу:
- Обогатите событие домена всеми необходимыми данными в обработчиках событий. Но, как я уже сказал, я не могу это сделать для Aggregates Roots.
- Использовать доступные данные из модели просмотра. То есть загрузите
Authorиз View Model и используйте его для построения строкиAuthorsAndBooks.
У последнего есть некоторые проблемы с concurrency. Данные автора могут быть недоступны в View Model во время обработки события BookAdded.
Какой подход вы используете для решения этой проблемы? Спасибо.