Estamos usando um monte de classes separadas com o sufixo -repositorypara recuperar os dados do banco de dados; para cada tabela seu próprio repositório.
Temos, por exemplo, uma customerrepositoryclasse que possui todos os tipos de métodos para recuperar clientes e uma vacancyrepositoryque possui todos os tipos de métodos para recuperar vagas.
Eu tenho duas perguntas sobre essa maneira de fazer as coisas:
Que tal obter dados que abrangem várias tabelas? Por exemplo, tenho uma tela que mostra todos os clientes que ainda não criaram uma vaga. É possível
customerrepositoryusar métodos dovacancyrespository, ou ambos os repositórios retornam resultados e existe uma classe mais alta na hierarquia (vamos chamá-la dedataservice) que obtém os resultados dos dois repositórios e os combina em um resultado?quanta lógica um repositório pode suportar?
Acho que não há problema em implementar o 'where active == true' em um repositório para recuperar apenas registros ativos, ou mesmo essa lógica simples deve ser tratada por uma classe mais alta na hierarquia (vamos chamá-lo dedataservice)?
O exemplo que eu estava encontrando agora é este:
Temos uma lista de perguntas, que contém uma ou mais perguntas.
A pergunta pode ter um resultado, que é mantido em uma tabela separada.
Portanto, quando você deseja recuperar o resultado total da lista de perguntas, é necessário combinar dados da questionlisttabela, da tabela de perguntas e da questionstatustabela.
No momento, temos 3 repositórios diferentes para essas tabelas.
Se eu perguntasse questionlistrepositoryqual é o resultado total da lista número 12, ele teria que obter dados de dois outros repositórios e, portanto, ter alguma lógica, isso é permitido?
Ou existe questionlistdataservicealguém que sabe quais repositórios usar?
Mais uma coisa: nossos repositórios podem resultar em um IQueryableserviço de chamada que pode combinar facilmente os resultados, mas e se esse não for o caso, não acho que seja uma boa ideia recuperar todo o conteúdo de todas as três tabelas do base de dados.