2013-02-05 25 views

risposta

8

È corretto che sia necessario un repository per aggregato. Ciò che può variare, tuttavia, è l'insieme di aggregati nel tuo dominio. Il modello Cliente/Ordine/Prodotto/Fornitore può essere scomposto in aggregati in diversi modi. La scomposizione in aggregati dipende da una varietà di fattori ed è dipendente dal dominio in questione.

Un aggregato deve essere un limite di coerenza che significa che definisce quale insieme di entità deve essere coerente nel contesto di comportamenti associati a tali entità. Dato questo vincolo, i riferimenti agli oggetti tra aggregati dovrebbero essere eliminati e sostituiti con riferimenti di identità.

Nel modello, potrebbe essere che cliente, ordine, prodotto e fornitore siano aggregati distinti e richiederebbero quindi repository separati. Anche se il cliente è una radice aggregata (parte dell'aggregato del cliente) e l'ordine dipende dal cliente, ciò non significa che il repository del cliente debba contenere il repository degli ordini. Il repository degli ordini dovrebbe essere completamente separato, poiché l'ordine è una radice dell'aggregazione dell'ordine.

Dai uno sguardo allo Effective Aggregate Design by Vaughn Vernon per un trattamento approfondito su come progettare gli aggregati.

+0

La prego di correggere questo: "... poiché l'ordine è una radice aggregata dell'aggregazione dell'ordine" – Elisabeth

+0

Ho cambiato un po 'il testo, ma non sono sicuro cosa volevi correggere? – eulerfx

+0

hm Immagino di non capire perché l'ordine sia la radice dell'aggregazione dell'ordine. Puoi dirmi dove l'ordine non sarebbe la radice dell'aggregato dell'ordine? Grazie per il link che ho aggiunto ai segnalibri. – Elisabeth

0

Hai 4 entità correlate come hai delineato sopra e il repository implementa il contesto della transazione per tutte quelle entità correlate.

+0

la domanda riguarda DDD non su entità e modelli di dati –