Что-то беспокоит меня по поводу шаблона хранилища
Какова реальная цель хранилища? Я понимаю это как часть Domain.Model, что-то, что предоставляет средства для выполнения команд на агрегатах, и это все.
Теперь, если вы используете универсальный базовый репозиторий, который предоставляет средства для CUD, вы можете сказать, что ваш домен не является универсальным, поэтому репозиторий не является универсальным, и я согласен, но только с одной точки зрения, что запросы отправляются, а не команды.
Я упал, что общий репозиторий устраняет необходимость в Domain.Repositories, по крайней мере, в контексте DDD, смешанного с CQRS (я знаю, что это может показаться противоречивым, и это именно то, как я упал). Но если вы отделите свои команды от запросов, то у вас будут WriteRepositories, содержащие только операции CUD. Таким образом, имея много дубликатов повсюду.
Представь себе это
CustomerRepository : ICustomerRepository
{
void Add(CustomerAggregate agg);
void Update(CustomerAggregate agg);
}
BookRepository : IBookRepository
{
void Add(BookAggregate agg);
}
SubscriptionsRepository : ISubscriptionsRepository
{
void Add(SubscriptionAggregate agg);
void Update(SubscriptionAggregate agg);
void Delete(SubscriptionAggregate agg);
}
...... еще 5 репо
Так имеет ли смысл общий репозиторий в контексте DDD, использующего шаблон CQRS, где у вас есть Command.Stack + Query.Stack? И, если да, устраняет ли он необходимость в Domain.Repositories (репозитории команд)?