NHibernate を使用してデータベース機能を処理するアプリケーションがあります。これで、フロートとしてマップされた列を持つテーブルができました。NHibernate は MySql データベースにテーブルを作成し、列が「FLOAT」であることも検証しました。注: 列で定義された FLOAT(M<,D) 精度はありません。それは単なる "FLOAT" です。
部分 SQL テーブル作成ステートメント:
CREATE TABLE `X` (
`TresholdLow` float NOT NULL,
たとえば、float プロパティの値が 5.46 のドメイン モデル (POCO) を挿入しようとすると、すべてうまくいくので、ドメイン モデルは適切にマッピングされ、機能しています。
しかし、プロパティを設定してドメイン モデルを挿入しようとするとfloat.MinValue
、値が 3.40282347E+38 になり、次のエラーが発生します。
ERROR 1264: Out of range value for column 'TresholdLow' at row 1
私はそれが次のことで何かをしなければならないかもしれないと思います。これは、Visual Studio の即時ウィンドウの入力 (? でマーク) と出力です。
?float.MinValue.ToString();
"-3.402823E+38"
?float.MinValue
-3.40282347E+38
最初の値は MySQL で受け入れられますが、後者は受け入れられません!!
この問題を回避するにはどうすればよいですか? 実際には問題にはなりませんが、理論的には、データを格納しているアプリケーションからのすべての可能な float 値をデータベースの float 列が受け入れないことはあまり良くありません。