¿Qué tipo de retorno al consultar múltiples entidades en la capa de Repositorio?

Tengo las siguientes capas involucradas en esta pregunta:

Capa de servicio (Uso de IoC para llamar al repositorio)Modelo de dominio (POCO / Entidades de dominio, interfaces de repositorio definidas)Capa de repositorio (EF .edmx y repositorios implementados)

Muchas veces es muy sencillo: la capa de repositorio consulta la base de datos a través de Entity Framework y devuelveIList<SomeDomainEntity> a la persona que llama que era la capa de servicio. lostipo devuelto es un tipo definido en el modelo de dominio.

El problema que estoy encontrando es cuando necesito consultar a través de los POCO A, B y C y obtener datos de todos para ser devueltos. Dado que no manejo ninguna lógica en el repositorio, necesito devolver estos datos a la capa de Servicio para ser procesados ​​(ya sea directamente o más probablemente llamando a alguna lógica en el modelo de dominio). Sin embargo no tengo untipo único desde los resultados de la consulta del repositorio para volver a la persona que llama.

Un tipo anónimo de curso maneja esto en los ejemplos que veo, pero como no estoy procesando esa lógica de los datos devueltos directamente en el Repositorio y es necesario que se devuelva, necesito un tipo físico para devolver. Aquí hay algunas soluciones en las que pensé, pero no estoy seguro de que me gusten:

Cree una nueva entidad de dominio en el Modelo de dominio que esencialmente sea una composición de todos los datos que consulté, por lo que este nuevo tipo único puede ser devuelto. Esto parece incorrecto para crear tipos básicos para satisfacer las necesidades de consulta.Haga que la capa de servicio llame a los repositorios individuales en las entidades A, B, C por separado y luego maneje los datos de cada objeto devuelto. Esto parece mucho trabajo extra.Crea un ViewModel para volver. Esto también me parece fuera de lugar. Aprovecho las clases de ViewModel en gran medida entre mi capa de servicio y las capas de la interfaz de usuario, pero nunca las he visto aprovechadas para el retorno desde el repositorio.

No puedo ser el único que realice consultas en múltiples entidades para obtener un conglomerado de datos que deba agregarse a un tipo y devolverse a la persona que llama. ¿Qué es una práctica común o una forma estándar de resolver esto para resolver mi problema?

¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta