Stiamo usando un gruppo di classi separate con suffisso -repository
per recuperare i dati dal database; per ogni tabella il proprio repository.
Abbiamo ad esempio una customerrepository
classe che ha tutti i tipi di metodi per recuperare i clienti e una vacancyrepository
che ha tutti i tipi di metodi per recuperare i posti vacanti.
Ho due domande su questo modo di fare le cose:
Che ne dite di ottenere dati che si estendono su più tabelle? Ad esempio, ho una schermata che mostra tutti i clienti che non hanno ancora creato un posto vacante. Un
customerrepository
metodo di utilizzo dalvacancyrespository
o entrambi i repository restituiscono risultati? Esiste una classe superiore nella gerarchia (chiamiamola adataservice
) che ottiene i risultati da entrambi i repository e li combina in 1 risultato?quanta logica può gestire un simile repository?
Penso che sia OK implementare il 'where active == true' in un repository per recuperare solo i record attivi, o anche quella semplice logica dovrebbe essere gestita da una classe superiore nella gerarchia (chiamiamola adataservice
)?
L'esempio che stavo incontrando ora è questo:
Abbiamo un elenco di domande, che contiene una o più domande.
La domanda può avere un risultato, che è contenuto in una tabella separata.
Pertanto, quando si desidera recuperare il risultato totale dell'elenco delle domande, è necessario combinare i dati dalla questionlist
tabella, dalla tabella delle domande e dalla questionstatus
tabella.
In questo momento abbiamo 3 diversi repository per queste tabelle.
Se chiedessi questionlistrepository
qual è il risultato totale per l'elenco numero 12, dovrebbe ottenere i dati da altri due repository e quindi avere qualche logica in esso, è permesso?
O c'è un questionlistdataservice
chissà quali repository usare?
Ancora una cosa: i nostri repository possono risultare in IQueryable
modo che un servizio di chiamata possa facilmente combinare i risultati, ma che ne dici di quando non è così, non credo sia una buona idea recuperare tutto il contenuto di tutte e tre le tabelle dal Banca dati.