使NHibernate对DateTime.Date使用TRUNC

时间:2012-02-15 16:26:14

标签: c# .net nhibernate linq-to-nhibernate

我有一个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)。

1 个答案:

答案 0 :(得分:2)

This issuefixed about a month ago,但尚未发布稳定版本(截至2012年2月15日)

在此之前,只需继承Oracle10gDialect并在构造函数中注册该函数:

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

然后配置NH以使用修改后的方言。