代码之家  ›  专栏  ›  技术社区  ›  BR75

如何用dapper映射dbnull值?

  •  2
  • BR75  · 技术社区  · 6 年前

    我正在使用dapper并执行以下查询,该查询将映射到类型列表 MyObject .默认映射器的问题是我有一个可以为空的 int 我表中的字段( INOUT )它保存整数值。一个可能的值是 NULL ,这将被映射到整数0中。我该如何预防?我得知道如果 输入输出 为空或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 回复  |  直到 6 年前
        1
  •  4
  •   Amit Joshi user8575948    6 年前

    dapper支持映射的默认映射器 DBNull 值不在框中。这不是问题。问题在于你的 MyObject.INOUT 定义。

    这个 int 类型不可为空,这意味着它只能保存整数值。允许它保持空值 整数值,需要输入 Nullable<int> 或者更简单地说 int? .

    要更正此问题,请更改 MyObject 收件人:

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

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