使用LINQ和带输出参数的存储过程丢失小数精度和小数位数

Eye*_*all 7 c# linq linq-to-sql

我有一个使用输出参数的存储过程,如下所示:

ALTER PROCEDURE [GetAmount] 
( 
@orderID [int], 
@totalcost decimal(18,2) OUTPUT 
) 
SELECT @totalcost = cost 
FROM mytable 
WHERE orderID = @orderID 
Run Code Online (Sandbox Code Playgroud)

当我将存储过程拖到设计器上时,designer.cs文件中的结果代码最终会失去精度和比例,如下所示:

[Parameter(DbType="Decimal")] ref System.Nullable<decimal> totalcost 
Run Code Online (Sandbox Code Playgroud)

这是一个问题,因为产品价格和订单总数之类的东西正在四舍五入(即19.95变为20).

现在,我可以手动更正.cs文件,但我必须记住每次更新时都要这样做.难道我做错了什么?有没有办法改变我的存储过程,使LINQ能够自动检测精度和规模?

Lan*_*her 2

您可以使用 Money 类型而不是 decial(18,2) 类型吗?