Devo implementare un progetto con CQRS, tuttavia sono in dubbio su quali entità ottengano un corrispondente comando e classi di query.
Se ho le classi A, B e C, visto che A è la mia radice aggregata e le altre sono entità figlio nel mio aggregato, quali classi dovrebbero avere classi di comando e di query?
Voglio dire, dovrei avere una QueryA, QueryB e QueryC, o dovrei avere solo QueryA, che porterà i dati del bambino usando il caricamento pigro, per esempio?
Per i repository, in base alla mia comprensione del modello di dominio, sto considerando solo un repositoryA (per la mia radice aggregata).
risposte:
7 per risposta № 1Le query non sono per aggregato, sono su base per visualizzazione. Ad esempio, si supponga di avere un account cliente e si desidera visualizzare
- un elenco di account
- dettagli dell'account con informazioni confidenziali (ad esempio dettagli della carta di credito)
- dettagli dell'account senza informazioni riservate
Si tratterebbe di tre query, una per ogni visualizzazione. E di solito senza cose dolorose come il carico pigro. O hai bisogno di qualche informazione per una visione specifica o non lo sai.
I comandi non sono anche per aggregato. Avresti un comando per ogni comportamento. Come OpenAccount, CloseAccount, MergeAccounts, ecc.