Хранение double.MinValue с помощью Nhibernate в sqlite

Я использую nhibernate для своего сохранения ИЛИ и сохраняю список двойников в таблицу, используя следующее сопоставление (где список встроен в другой класс).

<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: значение слишком велико или слишком мало для десятичного числа.

Похоже, что это связано с тем, что NHibernate хранит двойные значения как «ЧИСЛОВЫЕ» значения в моей sqlite dBase. Обратное преобразование кажется разоренным. Любые предложения очень приветствуются.

Привет, Мартейн


person Gluip    schedule 26.08.2009    source источник


Ответы (2)


В конце концов я решил это, введя еще один пользовательский IUserType для этой простой проблемы :(

person Gluip    schedule 26.08.2009

У меня нет опыта работы с SQLite, но вы можете переопределить выбор NHibernate типа данных SQL, используя атрибут sql-type в сопоставлении. Это может помочь, если NUMERIC не подходит для данных обстоятельств.

Например:

<property name="Foo" type="String">
    <column name="foo" length="64" not-null="true" sql-type="text"/>
</property>
person Erik Öjebo    schedule 26.08.2009
comment
Спасибо за ваше предложение... но ни один из типов, представленных в sqlite, не обеспечивает хорошую устойчивость максимальных значений... - person Gluip; 26.08.2009
comment
Похоже, это несовместимо с NHibernate 1.2 :( - person Ekevoo; 04.06.2010