我有一个利用 NHibernate 处理数据库功能的应用程序。现在我有一个表,其中有一列映射为浮点数。NHibernate 在 MySql 数据库中创建了表,我也验证了该列是“FLOAT”。注意:列中没有定义 FLOAT(M<,D) 精度,它只是“FLOAT”。
部分SQL建表语句:
CREATE TABLE `X` (
`TresholdLow` float NOT NULL,
现在,例如,当我尝试插入具有值为 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 接受,后者不接受!!
我该如何解决这个问题?实际上这不会是一个问题,但从理论上讲,让数据库浮点列不接受来自存储数据的应用程序的所有可能的浮点值并不是很好。