gpt4 book ai didi

c# - 使用具有特定精度的小数作为 Dapper 的输出参数

转载 作者:行者123 更新时间:2023-11-30 12:10:39 25 4
gpt4 key购买 nike

我正在评估 Dapper 作为自定义和繁琐代码的替代品,到目前为止一切都非常好并且很有前途。但是今天早上我偶然发现了动态参数的问题并且找不到解决方案。

存储过程计算客户的帐户余额和可用余额,并以两位十进制输出参数返回其结果。这些小数在 Precision=18 和 Scale=2 的存储过程中声明。此程序与当前的标准方法完美配合。但是在 Dapper 中,我找不到传递这些参数和指定比例的方法,所以我得到的只是十进制值的整数部分。

using (IDbConnection connection = OpenConnection())
{
var args = new DynamicParameters(new { custID = customerID});

// No way to set the scale here?
args.Add("@accnt", dbType: DbType.Decimal, direction: ParameterDirection.Output);
args.Add("@avail", dbType: DbType.Decimal, direction: ParameterDirection.Output);

var results = connection.QueryMultiple("Customer_CalcBalance", args, commandType:CommandType.StoredProcedure);
decimal account = args.Get<decimal>("@accnt");
decimal availab = args.Get<decimal>("@avail");
}

这里是问题,有一种方法可以传递十进制输出参数的比例吗?或者有不同的方法来实现我的目标以取回精确的十进制值?

最佳答案

聚会有点晚了,但我想我会提到这是在 2015 年修复的。Here是GitHub问题。用法示例:

public void Issue261_Decimals()
{
var parameters = new DynamicParameters();
parameters.Add("c", dbType: DbType.Decimal, direction: ParameterDirection.Output, precision: 10, scale: 5);
connection.Execute("create proc #Issue261 @c decimal(10,5) OUTPUT as begin set @c=11.884 end");
connection.Execute("#Issue261", parameters, commandType: CommandType.StoredProcedure);
var c = parameters.Get<Decimal>("c");
c.IsEqualTo(11.884M);
}

关于c# - 使用具有特定精度的小数作为 Dapper 的输出参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613635/

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