gpt4 book ai didi

oracle - 小巧玲珑,小数加倍?解析列 X 时出错

转载 作者:行者123 更新时间:2023-12-04 06:43:56 25 4
gpt4 key购买 nike

我的数据库是甲骨文。我使用 Dapper 1.13,它抛出一个异常说 Error parsing column 3 (LATITUDE=39.2330 - Decimal)。 LATITUDE 是我实体中的 double? 类型。

请帮帮我。

谢谢

最佳答案

是的,这是一个错误;已在本地修复 - 基本上,将第 2367 行(哇,那个文件什么时候变得这么大?)从:

il.Emit(OpCodes.Ldtoken, unboxType);

到:

il.Emit(OpCodes.Ldtoken, Nullable.GetUnderlyingType(unboxType) ?? unboxType);

基本上,当它应该发出 (decimal? )Convert.ChangeType(val, typeof(decimal))(注意typeof中最重要的?)。

Edit:实际上,我推送到 git 的修复比仅仅修复 Convert.ChangeType 更复杂一些 - 它现在可以根据需要解析运算符,所以 decimal <===> double 转换使用 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; }
}

关于oracle - 小巧玲珑,小数加倍?解析列 X 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com