Для каждого агрегата root (AR) у вас должен быть репозиторий. Как минимум, хранилище, вероятно, будет иметь метод void Save(Aggregate aggregate)
и Aggregate Get(Guid id)
. Возвращенный агрегат всегда будет полностью сформирован.
Я иногда добавляю методы для определенных c вариантов использования, чтобы обновить только определенные биты данных. Например, что-то вроде void Activate(Guid id)
или что-то подобное. Это просто для того, чтобы избежать манипулирования большим количеством данных, чем необходимо.
Запросы к репозиторию обычно проблематичны c, так как обычно вам следует избегать запросов к своему домену. Для такого сценария ios я рекомендую использовать механизм запросов , который ближе к данным и в более сыром формате, чем объект домена или граф объектов. Механизм запросов будет более вероятно возвращать примитивы, такие как int Count(Query.Specification specification)
или, возможно, возвращать список прочитанных моделей экземпляров.