我有一个使用输出参数的存储过程:
ALTER PROCEDURE [GetAmount]
(
@orderID [int],
@totalcost decimal(18,2) OUTPUT
)
SELECT @totalcost = cost
FROM mytable
WHERE orderID = @orderID
当我将存储过程拖到设计器上时,designer.cs文件中的结果代码最终会失去精度和比例,如下所示:
[Parameter(DbType="Decimal")] ref System.Nullable<decimal> totalcost
这是一个问题,因为产品价格和订单总数之类的东西正在四舍五入(即19.95变为20)。
现在,我可以手动更正.cs文件,但每次更新时我都必须记住这样做。难道我做错了什么?有没有办法改变我的存储过程,使LINQ能够自动检测精度和规模?
答案 0 :(得分:3)
我可以手动更正.cs文件,但
是的,您需要将此代码移动到部分类文件中,在那里编辑映射的精度,并从设计器中删除存储过程。
这为您提供了存储过程映射代码的手动规范。
答案 1 :(得分:2)
您可以使用货币类型而不是小数(18,2)类型吗?