2

私はdecimal(9,9)として定義されたデータベースフィールドを持っています。C#のedmxモデルは、このフィールドを精度とスケール9の10進変数にマップします。

変数に5を入れました。確認できるところはどこでも、値が5として表示されます(ローカル変数、エンティティクラスインスタンス、データコンテキストなど)。

値はDataContex.SaveChanges()「5.000000000」に変換されます。最善の方法として、エンティティフレームワークは、データベースに保存する前に、値に小数点以下9桁を追加していることがわかります。値の桁数が多すぎるため、これによりエラーが発生します。

誰かがこの動作の原因と私がそれを変更する方法を知っていますか?

追加情報-MicrosoftSQL2008R2でデータベースを作成することから始めました。次に、データベースからEntityFrameworkモデルを生成しました。

4

2 に答える 2

2

データベースと同じようにデータ型を本当に定義している場合decimal(9,9)は、問題があります。Microsoft
に よると、最初の数値は合計桁数で、2 番目の数値は小数点以下の桁数です。 したがって、実際には、そのようなフィールドには 1 未満の数値のみを の形式で格納できます。5つ保存する必要がある場合は、別のフォーマットが必要になります。
.123456789

于 2012-04-16T18:24:11.423 に答える
1

これは Entity Framework に固有のものではなく、精度が 9 に定義された 10 進数 (データベースにマップされます) に予想されます。したがって、5 を入力すると、データの定義方法により、小数点の後に 0 が追加されます。

これは、標準に準拠するために .NET 1.1 に導入されました (どの標準かは忘れました)。表示目的で、いつでも Math.Round を使用して精度のレベルを削除できます (または、実際に必要なものに合わせてデータを別の方法で定義できます)。

于 2012-04-16T17:01:02.553 に答える