La consulta de Dapper para el campo decimal con nulos no funciona

c# dapper orm

Pregunta

Tengo una tabla que contiene una columna decimal numerable (12,4). Cuando hago una consulta como esta:

const string sqlQuery = "SELECT Id From DummyTable WHERE Price = @Price";

var sqlParameter = new { Price = (decimal?)null };

esta consulta devuelve 0 registros. Pero cuando cambio la consulta como:

const string sqlQuery = "SELECT Id From DummyTable WHERE Price IS NULL;

esta sintaxis funciona Entonces, ¿cómo puedo consultar la columna decimal numerable con parámetros? Gracias.

Respuesta aceptada

No es muy sexy, pero puedes probar algo como esto:

[Test]
public void NullParamTest()
{
    _connection.Execute(@"drop table foo; 
                          create table foo(id int not null,price decimal(12, 4) null)");
    _connection.Execute("insert into foo values(1, null)");
    _connection.Execute("insert into foo values(2, 12.99)");

    const string sql = @"select price from foo 
                        where coalesce(price, -1) = coalesce(@Price, -1)";

    var result = _connection.Query<decimal?>(sql,new { Price = (decimal?)null }).FirstOrDefault();
    Assert.That(result, Is.Null);

    result = _connection.Query<decimal?>(sql,new { Price = 12.99 }).FirstOrDefault();
    Assert.That(result, Is.EqualTo(12.99));
}

Suponer que "Precio" no puede ser negativo ...



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é