我正在使用Dapper并执行以下查询,该查询已映射到类型为MyObject
的列表。我的默认映射器问题是我的表(int
)中有一个可为空的INOUT
字段,其中包含整数值。 NULL
是一个可能的值,该值已映射为整数0。如何防止这种情况发生?我必须知道INOUT
是NULL还是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; }
}
答案 0 :(得分:4)
Dapper支持默认映射器DBNull
的值开箱即用。那不是问题。问题出在您的MyObject.INOUT
定义上。
int
类型是不可为空的,这意味着它只能容纳整数值。要允许它保存空的或整数值,它将需要是Nullable<int>
类型,或更简单地说是int?
。
要解决此问题,请将MyObject
更改为:
public class MyObject
{
public int? INOUT { get; set; }
}
这将允许INOUT
字段存储null
或整数值。