Конкретный (я надеюсь) вопрос, на который я хотел бы получить конкретный ответ, если это возможно... в отношении DDD-архитектуры агрегатов, ответственности репозитория и мелкозернистого уровня.
Допустим, у меня есть следующие (упрощенные) таблицы:
- клиент [идентификатор, имя, идентификатор группы, идентификатор категории]
- Группа клиентов [идентификатор, имя]
- CustomerCategory [идентификатор, имя]
Основные функции (просто для демонстрации примеров использования методов)
Показать список клиентов и нажмите, чтобы показать одного клиента. Отредактируйте клиента и выберите группу из раскрывающегося списка всех групп. И то же самое для категорий.
Вопрос
Должен ли я рассматривать группу клиентов и категорию как отдельные агрегаты с:
Клиентский репозиторий. С помощью методов GetAllCustomers, GetCustomerById и т. д.
Репозиторий группы клиентов. С методами GetAllCustomerGroups, GetOneCustomerGroup
Репозиторий категорий клиентов. С методами GetAllCustomerCategories, GetOneCustomerCategory
Или только один репозиторий — CustomerRepository (со всеми вышеуказанными методами, более явно названными).
Слой выше в любом случае будет одним CustomerService с одним или несколькими репозиториями выше.
Мне бы хотелось получить некоторую информацию о том, как думать о размере совокупных и связанных данных (категорий, групп) с плюсами и минусами мелкозернистых репозиториев или нет. По-прежнему сохраняя простоту и сосредотачиваясь на решении проблем хорошим способом без чрезмерной архитектуры.
Я пытался найти подобные примеры здесь, на SO, а также читал статьи Вона Вернона, но, например, не видел, как его пример совокупности продуктов обрабатывает категории продуктов.