Quando si segue la progettazione guidata dal dominio (DDD), è corretto che un aggregato radice contenga un riferimento a un'entità interna che risulta essere l'entità radice su un aggregato separato?
Credo che questo non sia corretto, principalmente a causa di questa regola sul libro blu :
Nulla al di fuori dei confini di AGGREGATE può contenere un riferimento a qualsiasi cosa all'interno, tranne che alla radice ENTITY. La radice ENTITY può trasferire i riferimenti alle ENTITÀ interne ad altri oggetti, ma tali oggetti possono usarli solo in modo transitorio e non possono aggrapparsi al riferimento. Il root può consegnare una copia di un VALUE OBJECT a un altro oggetto e non importa cosa gli succede, perché è solo un VALORE e non avrà più alcuna associazione con AGGREGATE.
Se un aggregato di root contiene un riferimento a un altro aggregato di root, il limite del primo viene violato e l'intero concetto di aggregato è corrotto, quindi credo che se un aggregato di root sembra avere bisogno di contenere un riferimento a un altro aggregato di root, allora ho bisogno per creare un'entità diversa , che probabilmente condividerà alcuni degli stessi membri dell'altra entità radice, ma non avrà un'identità globale, come afferma questa altra regola nel libro:
Le ENTITÀ di root hanno un'identità globale. ENTITÀ all'interno del confine hanno identità locale, unica solo all'interno dell'AGGREGATO.
Credo che questo sarebbe il modo corretto di procedere, ma dal momento che sembra ripetitivo e ridondante (quando rimosso dal contesto di DDD, con OOP puro), sto chiedendo un feedback.