假设我有一个类模型,我希望在该模型中有非缺省值
public class MyModel()
{
public int PropertyOne { get; set; }
public int? PropertyTwo { get; set; }
public string PropertyThree { get; set; }
}
假设我用下面的查询查询MyModel
SELECT
NULL as PropertyOne,
NULL as PropertyTwo,
NULL as PropertyThree
如果我将其映射到MyModel类,则PropertyOne=0、PropertyTwo=空、PropertyThree=空.
默认情况下,如果Dapper在读取时遇到DBNull值,则它不会调用任何设置器,因此PropertyOne的缺省值为int,即0.
-
我不想要这样,我想验证我总是从我的查询中获得PropertyOne的非空值,并且如果读取器遇到DBNull,我想得到一个异常.
-
假设我也不希望PropertyThree的值为空.当映射发生时,我也可以使用Dapper以某种方式实现这一判断吗?我可以通过使用如下模型中的属性来完成此操作吗?
public class MyModel()
{
public int PropertyOne { get; set; }
public int? PropertyTwo { get; set; }
[NotDBNull]
public string PropertyThree { get; set; }
}
因此,理想情况下,我想实现的是使用上述模型并具有以下逻辑:
case 1:PropertyOne获取DBNull,但它不能为空=抛出异常
case 2:PropertyTwo获取DBNull,但它可为nullable=>;都是好的
case 3:PropertyThree获取DBNull,但标记为[NotDBNull]属性=>;引发异常
有没有什么方法可以在不使用其他形式的验证的情况下使用Dapper来实现这一点?