如何使用Dapper映射DBNull值?

时间:2018-06-29 11:57:10

标签: c# dapper

我正在使用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; }
}

1 个答案:

答案 0 :(得分:4)

Dapper支持默认映射器DBNull的值开箱即用。那不是问题。问题出在您的MyObject.INOUT定义上。

int类型是不可为空的,这意味着它只能容纳整数值。要允许它保存空的整数值,它将需要是Nullable<int>类型,或更简单地说是int?

要解决此问题,请将MyObject更改为:

public class MyObject
{
    public int? INOUT { get; set; }
}

这将允许INOUT字段存储null或整数值。