Заставьте NHibernate использовать TRUNC для DateTime.Date - PullRequest
0 голосов
/ 15 февраля 2012

У меня есть объект со свойством DateTime, который сопоставлен с таблицей в базе данных Oracle.

Следующий запрос приводит к тому, что NHibernate использует несуществующую функцию date вместо trunc:

session.Query<MyEntity>().Where(x => x.MyProperty.Date = myDate);

Результирующий SQL выглядит примерно так:

select <columns> from MY_ENTITY where date(MY_PROPERTY) = :p0;

Как сказать NHibernate использовать trunc вместо?

Я использую провайдер ODP.NET NHibernate (OracleDataClientConfiguration.Oracle10).

1 Ответ

2 голосов
/ 15 февраля 2012

Эта проблема была исправлена ​​около месяца назад , но стабильная версия еще не выпущена (по состоянию на 15 февраля 2012 г.)

Доэто происходит, просто наследуйте от Oracle10gDialect и зарегистрируйте функцию в конструкторе:

RegisterFunction("date", new StandardSQLFunction("trunc", NHibernateUtil.Date));

Затем настройте NH для использования модифицированного диалекта.

...