2013-04-28 1 views
0

Ce sont mes entités et les relations:Combien de racines globales dois-je

enter image description here

Aucune entité ne peut exister sans l'entité A. Lorsque A est supprimé toutes les autres entités seront supprimées. Donc A est ma racine agrégée.

Mais je ne suis pas sûr wether

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 

Dois-je maintenant 3 racines globales et donc créer 3 dépôts?

+0

Les RA apparaissent naturellement lors de la modélisation du domaine. Ce que vous avez ici est un schéma relationnel db. Le contexte délimité (BC) décide où un agrégat commence et se termine. Il est également très commun d'avoir le même nom pour une entité dans différents BC, mais avec une structure légèrement différente. Une implémentation d'entité Product peut varier de (ID, Name) dans un BC à un produit complet avec beaucoup de détails dans d'autres BC. Soyez très prudent lors de la définition des agrégats et de leurs racines, la modélisation incorrecte des objets de domaine est le plus commun avec DDD. – MikeSW

Répondre

2

Sans plus d'informations concernant votre domaine, il n'est pas possible de faire une suggestion concernant les limites agrégées. Les relations entre entités ne sont pas aussi pertinentes que les comportements associés aux entités. Une relation entre entités ne se traduit pas automatiquement par une référence d'objet; les relations peuvent également être implémentées en tant que référentiels.

Un agrégat est une limite de cohérence. En d'autres termes, il agrège l'état qui doit rester cohérent lors de l'exécution des comportements associés. Dans votre cas, il se peut très bien que chacune de ces entités soit un agrégat. Jetez un oeil à effective aggregate design pour avoir une meilleure idée de la factorisation d'un domaine en agrégats.