SQLに10進数(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'.
提案はありますか?
SQLに10進数(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'.
提案はありますか?
.NET コードで、decimal(18, 2) の double または decimal 型。
SQL から .NET 型への相互参照については、こちらを参照してください。
ここで、10 進数列を null にすることができる場合は、null 許容の 10 進数または
public decimal? DiscountRate { get; set; }
プロパティを に変更する必要がありますdecimal
。float
これにより、変換が容易になり、またはに伴う丸め誤差から保護されますdouble
。
この問題に関する広範な議論は次のとおりです: decimal と double
.NET クラスのプロパティを 10 進数型に変更するか、設定時に float に明示的に変換する必要があることをお勧めします。どちらを使用するかは実際にはコードに依存しますが、10 進数型を使用することは、それ以上のコンテキストがなくてもより正しいようです。
使用できますDecimal Type
リンク: http://msdn.microsoft.com/en-us/library/system.decimal.aspx
あなたは読むことができますSpecifying Parameter Data Types section