Violando Domain Driven Design, penso che i repository non dovrebbero fare riferimento l'uno all'altro. Inoltre, non dovresti mappare 1: 1 tra repository e tabella del database.
Questo è il concetto di Aggregate
e AggregateRoot
. Esempio, assumere in banca dati ha 2 tabelle:
Order
OrderLine
con rapporto 1: n, (Ordine, OrderLine) è definito come un aggregato perché OrderLine non può vivere da soli senza ordine. E in questo caso, Order è la radice di questo aggregato.
Con questo, invece di creare due repository:
OrderRepository
OrderLineRepository
Hai solo dovrebbe avere un solo OrderRepository
di prendersi cura di tutto il complesso, con carico a cascata, inserire e cancellare con OrderLine
Quindi, in Nel tuo caso, dovresti considerare che hai repository di indirizzi/città/regioni/paesi esistenti o meno.
Spero che questo aiuto
fonte
2012-09-25 06:25:49
non aiutano salvo per la alcune cose sono state fatte nel mio sistema. Abbiamo province/stati e paesi normailizzati. Quindi, se un utente o un negozio ha bisogno di caricare i suoi dati di indirizzo e ha riferimenti alle tabelle che il repository di regione/nazione utilizzerebbe. Va bene caricare versioni diverse di regioni/paesi poiché in questo contesto li userò di più come oggetti valore rispetto alle entità? –
grazie per questa semplice spiegazione. finalmente la lampadina si accese per me. :) – kman