C# Dapper.net十进制输出参数不返回精度值

C# Dapper.net十进制输出参数不返回精度值,c#,sql,.net,dapper,C#,Sql,.net,Dapper,我使用Dapper已经有一段时间了,它是一个很棒的ORM映射器。但最近我发现一个问题,将小数作为存储过程的输出参数传递会切断精度,只返回整数 var dynamicParam = new DynmaicParam(); dynamicParam.Add("decimalOut",11.25,dbtype.decimal,ParameterDirection.OutPut); connection.execute("sp1",dynamicParam,commandType.StoredProc

我使用Dapper已经有一段时间了,它是一个很棒的ORM映射器。但最近我发现一个问题,将小数作为存储过程的输出参数传递会切断精度,只返回整数

var dynamicParam = new DynmaicParam();

dynamicParam.Add("decimalOut",11.25,dbtype.decimal,ParameterDirection.OutPut);
connection.execute("sp1",dynamicParam,commandType.StoredProcedures);    
decimal val = dynamicParam.Get<decimal>("decimalOut");
var dynamicParam=new DynmaicParam();
dynamicParam.Add(“decimalOut”,11.25,dbtype.decimal,ParameterDirection.OutPut);
执行(“sp1”、DynamicRAM、commandType.StoredProcess);
decimal val=dynamicParam.Get(“decimalOut”);
在这种情况下,val将为11,而不是返回11.25,因为当过程仅返回传递时的确切out put参数时,它将返回11.25

我们使用了一个循环,如下所示,它也返回精度

var dynamicParam = new DynmaicParam();
dynamicParam.Add("decimalOut",11.25,dbtype.double,ParameterDirection.OutPut);
connection.execute("sp1",dynamicParam,commandType.StoredProcedures);    
decimal val = dynamicParam.Get<dynamic>("decimalOut");
var dynamicParam=new DynmaicParam();
dynamicParam.Add(“decimalOut”,11.25,dbtype.double,ParameterDirection.OutPut);
执行(“sp1”、DynamicRAM、commandType.StoredProcess);
decimal val=dynamicParam.Get(“decimalOut”);

但我仍然认为必须有更好的方法来处理这些十进制精度问题,因为它是一个惊人的ORM映射器,支持多种数据类型。欣赏更好的解决方法,并提前感谢您使用精度和比例

示例:

dynamicParam.Add("decimalOut",11.25,dbtype.decimal,ParameterDirection.OutPut, precision: 18, scale: 2);

H嗯。。。这太令人烦恼了。我想这是因为精度和比例没有设置在参数上。提醒我:它们是否可以作为参数添加到我正在使用的简洁版本中。此外,比例和精度不可用。在该线程下也会询问相同的问题,并且在该线程中,在传递输出参数数据类型时,已接受单个数据类型而不是小数。我必须看看这里能做些什么;这是一个问题。你最好的选择是更新库并使用可用的选项。如果你没有一个很好的更新libs的过程,那么你已经遇到了一个问题——假装它不存在并不能解决它