我在sql中有十进制(18,2)数据,我在.net端设置了float类的属性。当我选择对象.net时会返回如下错误:
The 'DiscountRate' property on 'Product' could not be set to a 'Decimal' value. You must set this property to a non-null value of type 'Single'.
你有什么建议吗?
答案 0 :(得分:2)
在您的.NET代码中,对于十进制(18,2),双精度型或十进制型。
有关从SQL到.NET类型的交叉引用,请参阅here。
现在,如果您的十进制列可以为null,请确保使用可为空的十进制或
public decimal? DiscountRate { get; set; }
答案 1 :(得分:0)
我建议你需要将.NET类中的属性更改为十进制类型,或者在设置时将其显式转换为float。您使用的实际上取决于您的代码,但使用十进制类型似乎更正确,没有任何进一步的上下文。
答案 2 :(得分:0)
您可以使用Decimal Type
链接:http://msdn.microsoft.com/en-us/library/system.decimal.aspx
您可以阅读Specifying Parameter Data Types section
答案 3 :(得分:0)
您应该将属性更改为decimal
。它使转换更容易,并保护您免受float
或double
附带的舍入错误。
以下是对此问题的广泛讨论:decimal vs. double