Я только начинаю работать с DDD, и у меня возникают проблемы с выяснением того, как приспособить реляционную природу моих данных. У меня есть то, что, как я считаю, будет считаться моим совокупным корнем, но у агрегата также есть собственный агрегат. Не желая нарушать Закон Деметры, мне интересно, не думаю ли я об этом неправильно, и надеюсь, что какой-нибудь эксперт DDD может предложить какое-то понимание.
Мой совокупный корень - это мой Account
объект, который имеет совокупность многочисленных AccountElement
сущностей, которые сами являются логическими группами отдельных ProductComponent
сущностей.
AccountElement
вне контекста Account
не имеет смысла, поэтому я согласен с моим выводом, что объект Account
является моим агрегированным корнем, и я ожидаю, что у сущности, имеющей агрегированный Elements
имущество. Это коллекция ProductComponent
, которая запутала меня. Этот агрегат не имеет значения вне AccountElement
, а на самом деле не имеет значения вне Account
.
Не думаю, что мне нужно обращаться к отдельным ProductComponent
объектам, расставив точки на них, например:
var reference = account.Elements(0).ProductComponents(0).ReferenceCode;
Но в то же время (с точки зрения предметной области) не имеет смысла обращаться к ProductComponent
напрямую из Account
сущности.
Я уверен, что все это немного трудно понять, не зная моего домена, но я надеюсь, что этого достаточно, чтобы получить хорошую обратную связь.