Агрегат репозитория и агрегатный корень с Entity Framework 4.0 - PullRequest
5 голосов
/ 21 апреля 2011

У меня есть вопрос по реализации шаблона хранилища с моей моделью данных.Я искал в Интернете и просмотрел много постов, но не нашел ответа, который очистил бы мои сомнения.В основном наша модель домена выглядит следующим образом: у нас есть клиентский объект, который имеет много дочерних объектов, а некоторые дочерние объекты, в свою очередь, будут иметь дочерние объекты, и в любой момент эти дочерние объекты без своих родительских объектов не нужны и некакой-то смысл в приложении.

client
 --> client zip codes
 --> client phone history
 --> client medical history
 --> client direct services
      --> client direct service assessments
      --> client direct service risk reductions
 --> client housing
      --> client housing landlord

и все идет так.Итак, из приведенного выше представления у меня есть несколько агрегатов, а корень - это клиентский объект, поэтому я думал о создании репозитория на уровне корневого агрегата, который является клиентом.Мой вопрос: как мне справиться с другими агрегатами?Может кто-нибудь, пожалуйста, дайте мне некоторые идеи по этому поводу.

Спасибо, Ajay.

1 Ответ

6 голосов
/ 21 апреля 2011

Как правило, хранилище отвечает за подготовку сводного корня для использования остальной частью программы.Таким образом, вы должны запросить хранилище для клиента, и он должен вернуть полный клиентский объект, полный почтовых индексов, истории телефонов, истории болезни и т. Д. Идея сводного корня состоит в том, что никакой внешний код не должен беспокоиться о получении клиентов безэти другие доступные агрегаты.

Если посмотреть с другой стороны, поскольку вы создаете клиентское хранилище, а клиент является корневым агрегатом, то задача хранилища клиента - создавать все подобъекты, даже если они сами являются агрегатами.

...