出错条件:
1.实体属性为bool?类型
2.对应字段为可空的tinyint(1)类型
3.该字段查询结果内即含有null,又含有正常值
解决方法:
考虑通过扩展typehandlers,自定义该类型字段转换
public class BoolConvert<T> : SqlMapper.TypeHandler<bool?>
{
public override void SetValue(IDbDataParameter parameter, bool? value)
{
// never hit
throw new NotImplementedException();
}
public override bool? Parse(object value)
{
var val = value as sbyte?;
if (val != null)
{
var result = Convert.ToBoolean(val);
return result;
}
return (bool?)value;
}
}
在使用dapper的query前 通过SqlMapper.AddTypeHandler注册该转换
var queryParam = queryJson.ToJObject();
var strSql = new StringBuilder();
strSql.Append("SELECT ");
strSql.Append(&#