У меня есть совокупный корень с именем Account
и объект с именем Contact
, к которому можно получить доступ с помощью метода в корне: Account.GetContactById(string id)
. Доступ к совокупному корню осуществляется через репозиторий, поэтому логика доступа к данным для получения учетных записей из хранилища находится там.
Где должна находиться логика доступа к данным для доступа к сущности Contact
? Большинство примеров, которые я вижу, демонстрируют метод Account.GetContactById
, выполняющий поиск в коллекции в памяти. В моем случае Account
может ссылаться на тысячи Contacts
, которые я не хотел бы предварительно загружать в память. Итак, учитывая, что при вызове метода потребуется доступ к хранилищу данных, могу ли я реализовать этот доступ в:
- Метод
Account.GetContactById
? Это расширит прямой доступ к хранилищу за пределами репозиториев и внесет некоторую жесткую связь. AccountRepository
, может быть вызван агрегатомAccount
? Казалось бы, это открываетContact
сущностей напрямую для любого другого пользователя репозитория, что нарушает правила Эванса.- Другой репозиторий, например
ContactRepository
? В этом случае у меня есть репозиторий для объекта, который не является совокупным корнем. - Другой?
Contact
не является собственным корневым каталогом? Почему вы решили использовать большой кластерAccount
aggregate? - person plalx   schedule 15.05.2015Contact
, вероятно, будет AR, поскольку вы ничего не получите, если их кластеризовать вAccount
. - person plalx   schedule 15.05.2015