¿Cómo puedo crear 1 o 2 objetos por fila con Dapper?

c# dapper sql-server

Pregunta

Tengo una fila con 4 columnas de datos. Quiero crear un objeto A a partir de datos en las columnas 1-2. Si los datos no están presentes en las columnas 1-2, use las columnas 3-4 para crear un objeto B. En casos excepcionales, tendremos datos en todas las columnas, pero los datos en las columnas 2 y 4 no coinciden. En ese caso, quiero devolver un objeto A y un objeto B.

¿Hay alguna manera de hacer esto en Dapper usando multi-mapping? ¿O debería devolver un objeto C, que son las 4 columnas, y luego procesar los datos para crear los objetos que A y BI realmente quieren?

public class A {
  public long ID {get;set;}
  public long Value {get;set;}
}
public class B {
  public long ID {get;set;}
  public long Value {get;set;}
}

Los objetos A y B no están relacionados entre sí (es decir, A no contiene una lista de B). Entonces no estoy seguro de cómo proceder.

Respuesta aceptada

Si los datos están particionados por Id , entonces ya debería funcionar si usa un tipo de envoltura para representar los dos valores. Por ejemplo, si usamos un Tuple<,> , entonces:

var data = conn.Query<A, B, Tuple<A, B>>(sql,(a, b) => Tuple.Create(a, b), args);


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow