Как исправить проблему с десятичными значениями в драйвере Sybase ODBC с помощью NHibernate?

У драйвера Sybase ODBC есть проблема с десятичным типом данных.

Например, когда приложение пытается сохранить в базе данных десятичное значение, возникает эта ошибка:

ERROR [22018] [DataDirect][ODBC Sybase Wire Protocol driver][SQL Server]Implicit conversion from datatype 'VARCHAR' to 'DECIMAL' is not allowed.  Use the CONVERT function to run this query.

Такая же ошибка возникает при попытке передать десятичный параметр хранимой процедуре.

Как мы можем исправить это с помощью NHibernate или Fluent NHibernate?

Спасибо.


person Pavel    schedule 25.05.2010    source источник
comment
Почему вы используете ODBC? NHibernate поддерживает клиент Sybase.   -  person Diego Mijelshon    schedule 25.05.2010
comment
Эта проблема также затрагивает библиотеку ADO.Net для Sybase ASE.   -  person Andre Luus    schedule 06.11.2012


Ответы (2)


Я не нашел простого решения для этого. Я изменил System.Decimal xml и POCO на System.Double, и это работает. Я попытался добавить собственные sql-insert и sql-update в файлы xml с помощью CONVERT, но это не сработало (например, значение 5,15 было изменено на 515).

person Tomek M.    schedule 06.10.2010
comment
Также переключился на System.Double, и у меня это тоже сработало (примечание: с использованием поставщика Sybase ASE ado.net). - person Andre Luus; 06.11.2012

База данных не поддерживает неявное преобразование char, varchar в decimal. Это имеет такое же поведение для JDBC. Пожалуйста, используйте функцию Convert и запустите запрос.

person Trideep Rath    schedule 15.05.2014