Stiamo usando un gruppo di classi separate con suffisso -repositoryper recuperare i dati dal database; per ogni tabella il proprio repository.
Abbiamo ad esempio una customerrepositoryclasse che ha tutti i tipi di metodi per recuperare i clienti e una vacancyrepositoryche 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
customerrepositorymetodo di utilizzo dalvacancyrespositoryo 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 questionlisttabella, dalla tabella delle domande e dalla questionstatustabella.
In questo momento abbiamo 3 diversi repository per queste tabelle.
Se chiedessi questionlistrepositoryqual è 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 questionlistdataservicechissà quali repository usare?
Ancora una cosa: i nostri repository possono risultare in IQueryablemodo 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.