C#加倍到Sql Server十进制(x,y)映射

时间:2017-02-02 17:35:27

标签: c# .net sql-server

C#Double不是Sql Server Decimal(X,Y)的确切数据类型映射,它实际上映射到float(53)。正如link中提到的,Sql Server中的float / Real数据类型是近似值,它们总是会导致相同数据处理的不同结果,这可能会导致很多问题,尤其是在财务应用程序中。

在我们的例子中,我们已将具有小数点精度要求的Sql Server列定义为Decimal(X,Y)并将其映射到C#Double,但由于数据持久保存到Sql,因此导致不可预测的结果服务器,很多时候数据被截断,很少一些数据略微降低或更高。

我们尝试在十进制之外添加一个额外的数字,以便截断不会产生影响,有些事情就像列是十进制(10,2),我们而不是保存6.23,尝试保存6.233,但这没有任何帮助,因为它可能仍然无法保持6.23,有时它是6.246.22

如果我们想要保留C#Double和Sql Server Decimal(X,Y),我们有什么选择。可能正在使用C#Decimal可以提供帮助,但是我们的值并非接近双倍的限制本身,所以在我看来,Decimal绝对会浪费内存,但如果它提供了正确的结果,我们仍然可以考虑

我们面临的主要挑战是数据中没有更改/修改,我们会更热衷于在C#端进行更改,因为我们的控制更多,而不是数据库架构,但欢迎任何好的建议。

0 个答案:

没有答案