Cómo mapear el valor DBNull con Dapper?

c# dapper

Pregunta

Estoy usando Dapper y estoy ejecutando la siguiente consulta, que está siendo mapeada a una lista de tipo MyObject . Mi problema con el asignador predeterminado es que tengo un campo nullable int en mi tabla ( INOUT ) que contiene valores enteros. Un posible valor es NULL , que se asigna al entero 0. ¿Cómo puedo evitar esto? Tengo que saber si INOUT es NULL o 0.

public List<MyObject> GetSomething()
{
    using (IDbConnection db = GetOpenConnection())
    {
        return db.Query<MyObject>("Select * from tbl_foo").ToList<MyObject>();
    }
}

public class MyObject
{
    public int INOUT { get; set; }
}

Respuesta aceptada

El mapeador predeterminado de Dapper admite la asignación de valores DBNull . Eso no es un problema. El problema es con su definición MyObject.INOUT .

El tipo int no admite nulos, lo que significa que solo puede contener valores enteros. Para permitir que contenga valores nulos o enteros, necesitará ser de tipo Nullable<int> o más simplemente int? .

Para corregir esto, cambie MyObject a:

public class MyObject
{
    public int? INOUT { get; set; }
}

Esto permitirá que el campo INOUT almacene valores null o enteros.



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é