我正在使用nhibernate进行OR持久化,并使用以下映射将列表中的双精度存储到表中(其中列表嵌入在另一个类中)。
<list name="Values" access="field" table="Values_double" >
<key column="variable_id"/>
<index column="no_data_values_list_index"/>
<element column="value" type="System.Double"/>
</list>
除非我尝试存储double.MinValue或double.MaxValue,否则此工作正常。我收到一个错误 从我的DB重新加载时说:
System.OverflowException:对于十进制,值太大或太小。
这似乎与NHibernate有关,在我的sqlite dBase中将双打存储为'NUMERIC'值。转换回来似乎破了。任何建议都非常受欢迎。
问候, 马亭
答案 0 :(得分:1)
最后,我通过为这个简单的问题引入另一个自定义IUserType来解决它:(
答案 1 :(得分:0)
我没有使用SQLite的经验,但您可以通过在映射中使用sql-type属性来覆盖NHibernate对SQL数据类型的选择。如果NUMERIC不适合特定情况,这可能会有所帮助。
例如:
<property name="Foo" type="String">
<column name="foo" length="64" not-null="true" sql-type="text"/>
</property>