mapear múltiples objetos secundarios con dapper

c# dapper oracle

Pregunta

Tengo una serie de entidades que necesito devolver a una persona que llama. En algunos casos, querrán una Clase A, en algunos una Clase B, y en algunos tanto la clase A como la B. Los datos están relacionados, todos de una tabla y hay un número decente de columnas. El código actual llama a A, lo mapea a C.ClassOfA, llama a B y lo mapea a ClassOfB. Puedo deshacer este lío, por supuesto, pero me gustaría devolver A y B como C con una sola llamada, pero estoy luchando con Dapper (puede ser porque esto no se puede hacer). Sé que las referencias A de BI pueden devolver todas usando multi-mapping, pero ese no es el caso. Además, la base de datos Oracle (que no es mi mejor opción) si eso es importante. Supongamos que mis dos tipos son:

class A
  int InventoryOnHand {get;set;}
  int ProjectedSales {get;set;}
class B
  int ExpectedReturns{get;set;}
  int ProjectedProduction{get;set;}

class C
  A ClassOfA{get;set;}
  B ClassOfB{get;set;}

Puedo construir la consulta que estoy usando dinámicamente y puedo devolver cada tipo, pero no puedo encontrar la manera de mapear C de modo que la consulta que devuelve los mapas A y B se transfiera a C. En su lugar. es posible?

TIA

Respuesta popular

Si lo entiendo bien, quieres devolver objetos de Clase C que contengan objetos de Clase A / B. Es decir, clases anidadas dentro de su ClassC.

¿Ha considerado mirar Slapper: https://github.com/SlapperAutoMapper/Slapper.AutoMapper

que mapeará datos dapper a sus clases?

El sql del oráculo se vería como el siguiente y alias las columnas seleccionadas para que se asignen / correspondan a los nombres de las propiedades en su clase A / classB:

select a.value1 as ClassOfA_InventoryOnHand, 
   a.ProjectedSales as ClassOfA_ProjectedSales, 
   b.ExpectedReturns as ClassOfB_ExpectedReturns, 
from a, b


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué