我有一个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
?
我正在使用NHibernate的ODP.NET提供程序(OracleDataClientConfiguration.Oracle10
)。
答案 0 :(得分:2)
This issue为fixed about a month ago,但尚未发布稳定版本(截至2012年2月15日)
在此之前,只需继承Oracle10gDialect
并在构造函数中注册该函数:
RegisterFunction("date", new StandardSQLFunction("trunc", NHibernateUtil.Date));
然后配置NH以使用修改后的方言。