Sto lottando con questo problema da molto tempo.
Diciamo che sto cercando di modellare alcune attività che hanno clienti, aziende, contratti, fatture, ecc. Tutte sembrano essere un buon candidato per la radice aggregata per me. Il problema è che, diciamo che Contract avrebbe un enorme elenco di campi, e molti di loro sarebbero richiesti. Quindi la maggior parte delle volte finisco con una grossa radice aggregata (un sacco di dati, qualche logica e invarianti) con enormi costruttori. Anche se lo romperò in oggetti di valore è solo minimizzando un danno (invece di 20 ho 7 argomenti) e il più delle volte quegli oggetti di valore sono super artificiali, non ha senso un business, sono solo una specie di contenitori di dati.
Il secondo problema è l'aggiornamento di questi dati. Dovrei aggiungere un singolo metodo per aggiornarlo, diciamo UpdateAllThisJunkData (, o scrivere un metodo per ciascuno?
Ritengo inoltre che gli aggregati come questo siano più di tipo CRUD e non abbiano molto a che fare con DDD, ma credo anche che sia necessario mantenere i dati in qualche modo nel sistema anche se non lo usano per elaborare alcuna logica, solo per scopi storici e di visualizzazione (l'utente può prendere decisioni basandosi su tali valori). Dovrei dire di spostare quel tipo di dati su AR o VO diversi, ad es. ContractData?
C'è anche l'opzione che sono paranoico e tutto va bene con la mia AR;)
Gradirei qualsiasi pensiero