Dapper - Sql para Object cast implícito de cadena a int

c# dapper

Pregunta

Estoy usando dapper y tengo problemas para convertir un valor de cadena del db a un int. ¿Alguien ha anulado el TypeMap para permitir esto?

Cualquier sugerencia seria genial.

Respuesta aceptada

Dapper es exigente con los tipos que mapea. Esto lo protege de todo tipo de errores desagradables que aparecen más adelante.

Por ejemplo, su db podría regresar:

  • 010hello
  • 10a10
  • 374837483748374837483748374834784378437438743874384738473

No hay un curso de acción claro para mapear este tipo de cosas a un Int32

Dicho esto, hay dos estrategias que puedes seguir con dapper que no requieren cambios en la generación de IL.

Opción 1: propiedad de la sombra

class Foo
{
   public int Age 
   { 
      get 
      { 
       int age; 
       int.TryParse(ageString, out age); 
       return age;  
      } 
   }
   string ageString;
}

\\ usage
cnn.Query<Foo>("select ageString from TableWithString");

Opción 2, emitido en SQL

cnn.Query<Bar>("select cast(ageString as int) Age from TableWithString");

No hay una manera clara de ampliar la funcionalidad de asignación en Dapper; si lo hace, se verá obligado a fusionar las correcciones que agreguemos con el tiempo a su copia local.



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é