Ich verwende Dapper und führe die folgende Abfrage aus, die einer Liste vom Typ MyObject
. Mein Problem mit dem Standard-Mapper ist, dass ich ein Nullable int
Feld in meiner Tabelle ( INOUT
), das ganzzahlige Werte enthält. Ein möglicher Wert ist NULL
, der in Integer 0 abgebildet wird. Wie kann ich das verhindern? Ich muss wissen, ob INOUT
NULL oder 0 ist.
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; }
}
Der Standard-Mapper von Dapper unterstützt das Mapping von DBNull
Werten. Das ist kein Problem. Das Problem tritt mit Ihrer MyObject.INOUT
Definition auf.
Der int
Typ ist nicht nullfähig, dh er kann nur ganzzahlige Werte enthalten. Um Null- oder Integer-Werte zu erhalten, muss der Typ Nullable<int>
oder einfacher int?
.
Um dies zu korrigieren, ändern Sie MyObject
zu:
public class MyObject
{
public int? INOUT { get; set; }
}
Dadurch kann das INOUT
Feld entweder null
oder einen ganzzahligen Wert speichern.