Как сопоставить значение DBNull с Dapper? - PullRequest
0 голосов
/ 29 июня 2018

Я использую 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 голосов
/ 29 июня 2018

Картограф по умолчанию для отображения поддержки Dapper DBNull значений из коробки. Это не проблема. Проблема в вашем MyObject.INOUT определении.

Тип int не имеет значения NULL, что означает, что он может содержать только целые значения. Чтобы он мог содержать нулевые или целочисленные значения, он должен иметь тип Nullable<int> или более просто int?.

Чтобы исправить это, измените MyObject на:

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

Это позволит полю INOUT хранить либо null, либо целочисленное значение.

...