2009-08-26 8 views
1

J'utilise nhibernate pour ma persistance OU et je stocke une liste de doubles dans un tableau en utilisant le mappage suivant (où la liste est incorporée dans une autre classe).Stockage d'un double.MinValue avec Nhibernate à 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> 

Cela fonctionne correctement sauf lorsque j'essaie de stocker double.MinValue ou double.MaxValue. Je reçois une erreur lors du rechargement de ma base de données DB en disant:

System.OverflowException: La valeur était trop grande ou trop petite pour une valeur décimale.

Ce qui semble être lié à NHibernate stockant les doubles comme valeurs 'NUMERIC' dans ma dBase sqlite. La conversion semble être cassée. Toute suggestion est la bienvenue.

Salutations, Martijn

Répondre

1

En fin de compte je l'ai résolu en introduisant un autre IUserType personnalisé pour ce simple problème :(

0

Je n'ai aucune expérience avec SQLite, mais vous pouvez remplacer le choix de NHibernate de type SQL en utilisant l'attribut de type SQL dans la cartographie. Cela pourrait aider si NUMERIC n'est pas approprié pour la circonstance donnée.

Par exemple:

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

Merci pour votre suggestion ... mais non des types que j'ai présents dans sqlite fournit une bonne persistance de maxvalues ​​... – Gluip

+0

Ceci ne semble pas être compatible avec NHibernate 1.2 :( – Ekevoo

Questions connexes