Вопрос

Я только начинаю работать с DDD, и мне трудно понять, как учесть реляционную природу моих данных.У меня есть то, что, по моему мнению, можно было бы считать моим совокупным корнем, но у агрегата также есть свой собственный агрегат.Не желая нарушать Закон Деметры, я задаюсь вопросом, думаю ли я об этом неправильно, и надеюсь, что какой-нибудь эксперт DDD сможет предложить некоторую информацию.

Мой совокупный корень — это мой Account объект, имеющий совокупность множества AccountElement сущности, которые сами по себе являются логическими группами отдельных ProductComponent сущности.

Ан AccountElement вне контекста Account не имеет никакого значения, поэтому меня устраивает мой вывод, что Account объект является моим совокупным корнем, и я ожидаю, что у этой сущности есть совокупный Elements свойство.Это ProductComponent Коллекция, которая меня смутила.Эта совокупность не имеет смысла вне AccountElement, и Действительно не имеет никакого значения вне Account.

Я не думаю, что мне следует иметь доступ к индивидуальному ProductComponent объекты, расставляя точки над ними, например:

var reference = account.Elements(0).ProductComponents(0).ReferenceCode;

Но в то же время не имеет смысла (с точки зрения предметной области) получать доступ к ProductComponent прямо из Account сущность.

Я уверен, что все это немного сложно понять без знания моей предметной области, но я надеюсь, что этого достаточно, чтобы получить хорошие отзывы.

Это было полезно?

Решение

Статья, на которую ссылается Роберт, хорошая.Я бы добавил, что если ProductComponent существует только в контексте AccountElement, а AccountElement существует только в контексте Account, то по расширению ProductComponent находится в контексте Account.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top