Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: GluipОтветов: 2

Я использую 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. Обратное преобразование кажется разоренным. Любые предложения очень приветствуются.

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

sqlitenhibernate

Ответы

Ответ 1 · рейтинг 1 · Gluip

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

Ответ 2 · Erik Öjebo

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

Например:

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы