2013-04-28 3 views
0

Это мои объекты и отношения:Сколько агрегатные корни у меня

enter image description here

Ни один субъект не может существовать без объекта A. Если A удаляется все остальные объекты будут удалены тоже. Следовательно, A - мой общий корень.

Но я не уверен, что кастрированный баран

1.) B is also an aggregate root for entity C,D and E 
2.) E is also an aggregate root for entity F 

1.) C,D and E can not exist without B being created 
2.) F can not exist without E being created 

Есть ли у меня теперь 3 агрегатных корни и, следовательно, создать 3 репозиториев?

+0

При проектировании домена, естественно, появляются AR. Здесь у вас есть реляционная схема db. Ограниченный контекст (BC) определяет, где начинается и заканчивается агрегат. Также очень часто бывает одно и то же имя для объекта в разных БК, но с немного другой структурой. Реализация объекта продукта может варьироваться от (ID, Name) в одном BC до полного продукта с большим количеством деталей в другом BC. Будьте очень осторожны при определении агрегатов и их корней, неправильное моделирование объектов домена - это MOST COMMON FLAW с DDD. – MikeSW

ответ

2

Без дополнительной информации о вашем домене невозможно сделать предложение относительно совокупных границ. Отношения между объектами не так важны, как поведение, связанное с объектами. Связь между объектами не автоматически преобразуется в ссылку на объект; отношения также могут быть реализованы как репозитории.

Агрегат представляет собой границу консистенции. Другими словами, он объединяет состояние, которое должно оставаться последовательным при выполнении связанных действий. В вашем случае вполне может быть, что каждое из этих объектов является совокупным. Взгляните на effective aggregate design, чтобы лучше почувствовать факторинг домена в совокупности.

Смежные вопросы