Lorsque vous suivez la conception pilotée par domaine (DDD), est-il correct qu'un agrégat racine contienne une référence à une entité interne qui se trouve être l'entité racine sur un agrégat distinct?
Je crois que ce n'est pas correct, principalement à cause de cette règle sur le livre bleu :
Rien en dehors de la limite AGGREGATE ne peut contenir de référence à quoi que ce soit à l'intérieur, sauf à la racine ENTITY. L'ENTITY racine peut transmettre des références aux ENTITIES internes à d'autres objets, mais ces objets ne peuvent les utiliser que de manière transitoire et ils peuvent ne pas conserver la référence. La racine peut remettre une copie d'un OBJET DE VALEUR à un autre objet, et peu importe ce qui lui arrive, car c'est juste une VALEUR et n'aura plus aucune association avec l'AGGREGATE.
Si un agrégat racine contient une référence à un autre agrégat racine, la limite de l'ancien est violée et le concept entier d'un agrégat est corrompu, donc je crois que si un agrégat racine semble avoir besoin de contenir une référence à un autre agrégat racine, alors j'ai besoin pour créer une entité différente , qui partagera probablement certains des mêmes membres que l'autre entité racine, mais n'aura pas d'identité globale, comme l'indique cette autre règle dans le livre:
Les ENTITÉS racine ont une identité mondiale. LES ENTITÉS à l'intérieur de la frontière ont une identité locale, unique au sein de l'AGRÉGAT.
Je crois que ce serait la bonne façon de procéder, mais comme cela semble répétitif et redondant (lorsqu'il est retiré du contexte de DDD, avec de la POO pure), je demande des commentaires.