Mapeo de varias columnas para escribir Dapper

c# dapper

Pregunta

Estoy tratando de mapear seleccionar de esta manera:

SELECT id, total, total_currency FROM sometable

id es VARCHAR, el total es numérico, la divisa es char (3)

En una entidad como esta:

class MyEntity
{
     string Id { get; set; }
     Money total { get; set; }
}

Dinero, por supuesto, tiene constructor con firma (decimal amount, string currencyId) . ¿Cómo logro eso en Dapper?

Respuesta popular

Tendrá que utilizar el mapeo múltiple si tiene una relación de entidad padre / hijo, re: Money es una clase que es una propiedad secundaria de MyEntity :

// assumes connection has already been created

string sql = "SELECT id, total, total_currency FROM sometable";

IEnumerable<MyEntity> result = conn.Query<MyEntity, Money, MyEntity>(
    sql,
    (entity, money) => { entity.Money = money; return entity; },
    spliton: "total");

Para una explicación más detallada, ver: Uso correcto de Multimapping en Dapper

Si necesita parámetros personalizados para la clase Money , se recomienda que utilice el método genérico y proyecte el resultado dinámico en su resultado real. Ver: ¿ Llamar al constructor personalizado con Dapper?



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é