【问题标题】:Specified Cast not Valid error using Nhibernate使用 Nhibernate 指定转换无效错误
【发布时间】:2013-08-14 10:20:05
【问题描述】:

使用 Nhibernate、Visual Studio 2010、C#。

我在转换小数时遇到问题?类型。代码给出了一个

Specified Cast is not valid error

并在 .UniqueResult 行上失败。

以下是我的代码。

private decimal? GetCostValueFromQuery(string query, ItemPriceContext item)
{
    var session = ActiveRecordMediator.GetSessionFactoryHolder()
                                      .CreateSession(typeof(object));
    return session.CreateSQLQuery(string.Format(query, item.ItemCode))
                  .UniqueResult<decimal?>();
}

我的SQL查询结果是62.3891005516052

我怀疑结果有很多小数位,因此失败了。

有什么建议我可以对结果进行舍入或减少结果以使其受支持?

【问题讨论】:

  • 如果你只使用 &lt;decimal&gt; 会发生什么你查询返回 NULL 结果,如果是,那么可能你需要在你的 sql 中使用它IsNull(&lt;exp&gt;,0)

标签: c# nhibernate type-conversion decimal


【解决方案1】:

在 SQL 查询的 SELECT 部分中使用您需要的任何舍入、截断等。

但您还应该检查 SQL 查询的实际返回类型是什么。真的是十进制吗?

【讨论】:

  • 我的 sql 返回一个小数 (63.31)。它也可能包含空值,因此我使用了十进制?问题在于我仍然无法弄清楚的休眠查询。有没有其他方法可以让我写下同一行并得到我的结果。
  • @aMazing 就像我说的,任何舍入都需要进入查询本身。由于您使用的是 SQL 查询,因此它需要进入 SQL 查询的 SELECT 部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-27
相关资源
最近更新 更多