C# NHiberate查询中的基本日期/时间操作

C# NHiberate查询中的基本日期/时间操作,c#,nhibernate,date,hql,criteria-api,C#,Nhibernate,Date,Hql,Criteria Api,我试图用一些基本的日期/时间操作来限制我的NHibernate查询。更具体地说,我想执行以下语句(伪SQL): 与: 在上创建的映射到类型为DateTime的属性 lifespan映射到类型为TimeSpan的属性 sysdate是当前日期/时间(数据库服务器或应用程序主机的,我不在乎) 通过使用标准API或HQL是否有任何内置方法可以做到这一点 return session .CreateCriteria<Article>() .Add( ? ) .List<

我试图用一些基本的日期/时间操作来限制我的NHibernate查询。更具体地说,我想执行以下语句(伪SQL):

与:

  • 在上创建的
    映射到类型为
    DateTime
    的属性
  • lifespan
    映射到类型为
    TimeSpan
    的属性
  • sysdate
    是当前日期/时间(数据库服务器或应用程序主机的,我不在乎)
通过使用标准APIHQL是否有任何内置方法可以做到这一点

return session
  .CreateCriteria<Article>()
  .Add( ? )
  .List<Article>();
返回会话
.CreateCriteria()
.Add(?)
.List();

由于查询是由服务器执行的,因此它需要支持您想要执行的操作


如果是这样,您需要继承相应的方言并在其构造函数中注册相应的函数。

+1非常好的可重用方案,强调了NHibernate的可扩展性。我想它尽可能接近我想要的。非常感谢。
create view activearticle as 
    select * from article 
    where created_on + lifespan >= sysdate
create view activearticle as 
    select * from article 
    where created_on + lifespan >= sysdate