Funzioni aggregate in un repository

4

Sono nuovo in DDD e il mio understanding del modello di repository è che agisce come una raccolta di root aggregati in cui è possibile aggiungere, eliminare, aggiornare, ecc. una determinata radice aggregata. La mia domanda è, dove il codice che esegue le funzioni aggregate (contare, raggruppare per, somma, ecc.) Dovrebbe essere posizionato, dal momento che non restituisce o opera su una radice aggregata? Grazie

    
posta Marco Prado 31.08.2016 - 03:59
fonte

2 risposte

1

Probabilmente su un altro aggregato

Il fatto che tu abbia bisogno di contare determinati aggregati indica che potresti non avere un livello nel tuo modello di dominio. Ad esempio, se si dispone di una radice aggregata "cliente" ma si trova a dover visualizzare il numero totale di clienti, è necessario disporre di alcune nozioni nel proprio dominio su cui contare. Non si limitano a "contare" i clienti, ma la tua azienda ha un elenco di clienti e puoi contare la quantità di clienti in tale elenco.

Detto questo, è necessario porsi la domanda se la complessità aggiunta di introdurre un altro aggregato ne valga la pena. Se hai solo bisogno del numero di clienti, potrebbe essere più realistico mettere semplicemente il conteggio sul tuo repository. Se ti trovi a dover contare su un numero di conteggi (ottieni il numero totale di clienti in un grafico a torta che distingue i clienti nella tua città, nel tuo stato, nel tuo paese, nel tuo continente e in "altro") se potrebbe essere migliore per introdurre un concetto naturale nel tuo dominio.

    
risposta data 31.08.2016 - 10:21
fonte
0

Mi piace la risposta di @ JDT.

Tuttavia, se si decide di aggiungere solo metodi al proprio repository e si scopre che il repository si sta gonfiando nel tempo con troppi metodi di aggregazione, è possibile ridefinire ciascuno di essi in un oggetto query separato.

    
risposta data 16.11.2016 - 16:51
fonte

Leggi altre domande sui tag