modellazione DDD, interazione tra radici di aggregazione
-
30-09-2019 - |
Domanda
Ha segnato la mia radici di aggregazione con 1, 2, 3. Sembra abbastanza bello - quasi come l'uva.
cosa che mi piace è un'entità che ha segnato con la freccia rossa.
Immaginiamo che:
- AR # 1 è la società
- AR # 2 è l'ufficio
- AR # 3 è dipendente
- Entity segnato con la freccia rossa si chiama
Country
- L'impresa stabilisce le regole da cui i paesi si ingaggia dipendenti (su assunzioni,
company.Countries.Contains(employee.Country)
deve essere vero)
- L'impresa stabilisce le regole da cui i paesi si ingaggia dipendenti (su assunzioni,
io in qualche modo di vedere questa parte senza importanza di dominio (forse non suona come che in questo esempio uno), e vorrei evitare di promuovere Paese a root aggregato.
Glossario sulle radici di aggregazione dice:
Transient riferimenti ai membri interni possono essere passati per l'utilizzo in una sola operazione.
-? Non l'introduzione di qualcosa di simile a 'EmployeeCountry', rimuovendo riferimento alla società Country e controllando se il paese dei dipendenti corrisponde a qualsiasi paese società di noleggio acustici ragionevole
Tutte le altre idee?
Come posso ottenere la mia uva sembrano come dovrebbero?
Soluzione
In questo contesto Country
è solo un oggetto di valore, non un'entità - e tanto meno una radice di aggregazione -. Quindi non c'è motivo di cambiare nulla circa il vostro disegno (senza ulteriori informazioni)
Inoltre, nota che l'avviso si riferisce a citare membri interni di radici di aggregazione , non si aggrega. Non c'è niente di sbagliato con il mantenimento di riferimenti a aggregati in più luoghi. radici di aggregazione si suppone agli oggetti figlio incapsulare in modo che ci sia un posto unico per far rispettare le regole di business per gli oggetti correlati.
Si può vedere chiaramente in diversi luoghi a Evans' "Domain-Driven Design" (aka, " Il Blue Book "). Ad esempio, vedere il diagramma a pagina 127 (nell'introduzione di radici di aggregazione), che mostra un aggregato auto che ha un riferimento a un aggregato motore.