Sto imparando DDD eppure ho più domande che risposte.
Consideriamo un modello di una directory che contiene un numero enorme di file.
Ecco come lo vedo:
Directory è una radice di aggregazione.
Questa entità deve avere la logica di convalida del controllo dell'unicità del nome del file quando viene aggiunta o semplicemente rinominata. E l'entità file contiene la logica "SetName", che notifica la directory tramite l'evento di dominio sulle modifiche al nome.
Ma come dovrebbe funzionare Directory allora?
Non è sempre possibile caricare tutti i file in memoria. In questo caso, il repository di file ha una logica ad hoc per verificare l'univocità del nome? Suppongo sia una decisione fattibile.
Tuttavia, cosa succede se alcuni file sono già stati aggiunti o rinominati con la transazione non ancora eseguita? (nulla lo proibisce. I limiti di transazione sono stabiliti esternamente in relazione alla logica aziendale). Probabilmente il repository dovrebbe tenere in considerazione sia gli stati in memoria sia quelli persistenti (unire questi stati può essere un compito non banale.)
Quindi, quando la radice aggregata con tutti i suoi figli si adatta alla memoria, tutto va bene. E non appena non puoi materializzare tutte le entità ci sono problemi.
Mi piacerebbe sapere quali sono gli approcci per tali situazioni. Potrebbe essere non c'è alcun problema ed è solo a causa del mio fraintendimento del soggetto.