在我的asp.net项目中,我使用dapper从Oracle数据库获取数据。 我有一个这样的SQL请求:
select SUM(( pt.end_date - pt.start_date ) * 24 ) time_coacsh
,SUM(( pt.end_date - pt.start_date ) * 24 )/COUNT(rc.reg_coach_id) oborot_coacsh
from ...
和仅具有以下属性的模型:
[Column("time_coacsh")]
public Double TimeCoacsh { get; set; }
[Column("oborot_coacsh")]
public Double OborotCoacsh { get; set; }
我正在尝试通过以下方法获取对象列表:
public IEnumerable<TModel> Query<TModel>(string sql, object paramsSql = null)
{
SqlMapper.SetTypeMap(typeof(TModel), new CustomPropertyTypeMap(typeof(TModel), BaseParamMappings.SelectProperty));
return SqlMapper.Query<TModel>(_db, new CommandDefinition(sql, paramsSql, null, null, CommandType.Text)).ToList();
}
但是我收到此错误:
解析列0(TIME_COACSH = null)时出错
如果我在oracle中执行sql请求,我将获得所需的数据而没有一些null
值。
在模型中,我尝试使用Float,Decimal,Double,但出现相同的错误。
答案 0 :(得分:0)
我解决了这个问题。
字段time_coacsh
和oborot_coacsh
等于13,333333333333333333333333333338
之类的值,即它们大约有40个小数位。
我将sql请求更改为
select round( SUM( ( pt.end_date - pt.start_date ) * 24 ),2 ) time_coacsh
,round (SUM( ( pt.end_date - pt.start_date ) * 24 )/COUNT( rc.reg_coach_id ), 2) oborot_coacsh
在模型中,对于这些字段,请使用Decimal
类型
PS:Dapper支持Column
属性