Ich versuche, eine Datenbank von MySQL zu SQLServer mit Dapper zu migrieren.
Fast alles ist in Ordnung außer mit TinyInt-Feldern.
Unabhängig vom Typ, den ich in meinem C # -Code angegeben habe, löst Dapper systematisch eine Ausnahme aus:
{"Fehler beim Analysieren der Spalte 18 (COLUMN_WITH_PROBLEM = 0 - SByte)"}.
Es scheint damit zu tun zu haben, dass der Wert eines Datensatzes in der MySQL-Datenbank null ist
Ich habe es versucht:
int
, int?
byte
, byte?
Byte
, Byte?
sbyte
, sbyte?
SByte
, SByte?
short
, short?
boolean?
Aber ich habe immer das gleiche Problem.
Welchen Typ muss ich in meinem C # -Code angeben, um diesen Fehler zu vermeiden?
Offensichtlich kann ich den Spaltentyp in der Datenbank nicht ändern.
Null-fähiges Byte? sollte arbeiten.
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);
}
Dies könnte mit dem hier diskutierten MySQL-Connector-Problem zusammenhängen.