Предположим, что 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
.
Какой подход вы используете для решения этой проблемы? Спасибо.