Это мое понимание DDD на данный момент:
- Строгий шаблон репозитория должен реализовывать только функции get(), delete() и create() и, возможно, варианты get(), в которых можно искать или извлекать всю коллекцию
- Обычно для каждого агрегатного корня есть один репозиторий
(из исследования, я знаю, что они не всегда принимают нормы)
Вопрос заключается в том, как реализовать сложные запросы, которые включают в себя множество совокупных корней. Например, у нас есть два совокупных корня - продукт и пользователь. Если я делаю страницу, в которой перечислены продукты, которые пользователь купил, у меня есть запрос, который растягивается как по агрегату пользователя, так и по агрегату продукта.
Как этот запрос должен быть реализован?
-
Теперь я должен иметь репозиторий для этого запроса и запросов со связанными функциями (некоторые не согласятся и говорят, что репозиторий не является слоем запроса).
-
Используйте только репозиторий для продукта и пользователя, захватывайте все записи и делайте все в памяти (это звучит неправильно)
-
У вас есть запрос (LINQ или SQL) внутри службы, не используя репозиторий, связанный с агрегатами вообще.
Есть ли другие способы?