oracle – Dapper,十进制加倍?解析列X时出错
发布时间:2021-01-08 06:22:38 所属栏目:站长百科 来源:网络整理
导读:我的数据库是Oracle.我使用Dapper 1.13,它抛出一个异常,说错误解析第3列(LATITUDE = 39.2330 – 十进制). LATITUDE是双倍?输入我的实体. 请帮我. 谢谢 解决方法 是的,这是一个错误;在本地固定 – 基本上,更改行2367(哇,该文件何时变得如此之大?)来自: il.
|
我的数据库是Oracle.我使用Dapper 1.13,它抛出一个异常,说错误解析第3列(LATITUDE = 39.2330 – 十进制). LATITUDE是双倍?输入我的实体. 请帮我. 谢谢 解决方法是的,这是一个错误;在本地固定 – 基本上,更改行2367(哇,该文件何时变得如此之大?)来自:il.Emit(OpCodes.Ldtoken,unboxType); 至: il.Emit(OpCodes.Ldtoken,Nullable.GetUnderlyingType(unboxType) ?? unboxType); 基本上,它是发出:(十进制?)Convert.ChangeType(val,typeof(十进制?))什么时候应该发光(十进制?)Convert.ChangeType(val,typeof(十进制))(注意最重要的?的类型). 编辑:实际上,我推送到git的修复比修复Convert.ChangeType要复杂得多 – 它现在根据需要解析运算符,所以小数< ===>双重转换使用IL静态调用. 这将在下一个版本中修复.或者您可以在本地构建.现在通过以下内容: public void TestDoubleDecimalConversions_SO18228523_RightWay()
{
var row = connection.Query<HasDoubleDecimal>(
"select cast(1 as float) as A,cast(2 as float) as B,cast(3 as decimal) as C,cast(4 as decimal) as D").Single();
row.A.Equals(1.0);
row.B.Equals(2.0);
row.C.Equals(3.0M);
row.D.Equals(4.0M);
}
public void TestDoubleDecimalConversions_SO18228523_WrongWay()
{
var row = connection.Query<HasDoubleDecimal>(
"select cast(1 as decimal) as A,cast(2 as decimal) as B,cast(3 as float) as C,cast(4 as float) as D").Single();
row.A.Equals(1.0);
row.B.Equals(2.0);
row.C.Equals(3.0M);
row.D.Equals(4.0M);
}
public void TestDoubleDecimalConversions_SO18228523_Nulls()
{
var row = connection.Query<HasDoubleDecimal>(
"select cast(null as decimal) as A,cast(null as decimal) as B,cast(null as float) as C,cast(null as float) as D").Single();
row.A.Equals(0.0);
row.B.IsNull();
row.C.Equals(0.0M);
row.D.IsNull();
}
class HasDoubleDecimal
{
public double A { get; set; }
public double? B { get; set; }
public decimal C { get; set; }
public decimal? D { get; set; }
}
(编辑:清远站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

