我正在评估 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");
}
这是问题,有一种方法可以传递十进制输出参数的比例吗?或者有一种不同的方法可以实现我的目标,即取回精确的十进制值?