2009-08-26 40 views
1

我爲我的OR持久性使用nhibernate,並使用下列映射(其中列表嵌入在另一個類中)將一個雙精選列表存儲到表中。用nhibernate存儲一個double.MinValue到sqlite

<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。從我的數據庫中重新加載時出現錯誤 :

System.OverflowException:值對於Decimal來說太大或太小。

這似乎與NHibernate在我的sqlite dBase中將雙打存儲爲'NUMERIC'值有關。轉換回來似乎破產。任何建議都非常受歡迎。

問候, 馬亭

回答

1

在我通過引入其他自定義IUserType這個簡單的問題:(

0

我使用SQLite沒有經驗,但你可以通過使用映射sql-type屬性重寫NHibernate的選擇SQL數據類型。如果NUMERIC不適用於特定情況,這可能會有所幫助。

例如:

<property name="Foo" type="String"> 
    <column name="foo" length="64" not-null="true" sql-type="text"/> 
</property> 
+0

感謝您的建議,解決它的結束......但現在我已經在各類非sqlite提供了很好的maxvalues持久性... – Gluip

+0

這似乎不與NHibernate 1.2兼容:( – Ekevoo