Dapper problema con pequeña int

c# dapper mysql sql-server tinyint

Pregunta

Estoy tratando de migrar una base de datos de MySQL a SQLServer usando Dapper.

Casi todo está bien, excepto con los campos TinyInt.

Independientemente del tipo que especifique en mi código C #, Dapper arroja sistemáticamente una excepción:

{"Error al analizar la columna 18 (COLUMN_WITH_PROBLEM = 0 - SByte)"}.

Parece estar relacionado con el hecho de que el valor de uno de los registros en la base de datos MySQL es nulo

He intentado:

  • int , int?
  • byte , byte?
  • Byte , Byte?
  • sbyte , sbyte?
  • SByte , SByte?
  • short , short?
  • e incluso boolean?

Sin embargo, siempre tengo el mismo problema.

¿Qué tipo debo especificar en mi código C # para evitar este error?

Obviamente no puedo cambiar el tipo de columna en la Base de datos.

Respuesta popular

¿Byte nula? Deberia trabajar.

public class Foo
{
    public byte? Bar { get; set; }
}

    [Test]
    public void TestTinyint()
    {
        var result = _sqlConnection.Query<Foo>(@"select 0 as 'Bar' 
                                                union all select null as 'Bar'");
        Assert.That(result.First().Bar, Is.EqualTo(0));
        Assert.That(result.Last().Bar, Is.Null);
    }

Podría estar relacionado con el problema del conector MySQL discutido aquí .



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é