使用Nhibernate存储double.MinValue到sqlite

时间:2009-08-26 11:58:15

标签: nhibernate sqlite

我正在使用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'值。转换回来似乎破了。任何建议都非常受欢迎。

问候, 马亭

2 个答案:

答案 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>