Estamos usando un grupo de clases separadas con el sufijo -repository
para recuperar los datos de la base de datos; para cada tabla su propio repositorio.
Tenemos, por ejemplo, una clase customerrepository
que tiene todo tipo de métodos para recuperar clientes, y un vacancyrepository
que tiene todo tipo de métodos para recuperar vacantes.
Tengo dos preguntas sobre esta forma de hacer las cosas:
-
¿Qué hay de obtener datos que abarquen varias tablas? Por ejemplo, tengo una pantalla que muestra a todos los clientes que aún no han creado una vacante. ¿Puede un
customerrepository
usar métodos delvacancyrespository
, o hacer que ambos repositorios devuelvan resultados y hay una clase más alta en la jerarquía (llamémosladataservice
) que obtiene los resultados de ambos repositorios y los combina en 1 resultado ? -
¿Cuánta lógica puede manejar este repositorio?
Creo que está bien implementar el 'donde activo == verdadero' en un repositorio para recuperar solo registros activos, ¿o incluso esa simple lógica debería ser manejada por una clase más alta en la jerarquía (llamémosladataservice
)?
El ejemplo que estaba encontrando ahora es este:
Tenemos una lista de preguntas, que contiene una o más preguntas.
La pregunta puede tener un resultado, que se mantiene en una tabla separada.
Entonces, cuando quiera recuperar el resultado total de la lista de preguntas, debe combinar los datos de la tabla questionlist
, la tabla de preguntas y la tabla questionstatus
.
Ahora mismo tenemos 3 repositorios diferentes para estas tablas.
Si le preguntara a questionlistrepository
cuál es el resultado total de la lista número 12, tendría que obtener datos de otros dos repositorios y, por lo tanto, tener algo de lógica, ¿está permitido?
¿O hay un questionlistdataservice
que sabe qué repositorios usar?
Una cosa más: nuestros repositorios pueden dar como resultado IQueryable
, por lo que un servicio de llamadas puede combinar fácilmente los resultados, pero ¿qué tal cuando este no sea el caso? No creo que sea una buena idea recuperar todo el contenido. de las tres tablas de la base de datos.