在NHibernate QueryOver语法中使用current_timestamp

问题描述

|| 是否可以请求在除sql和HQL之外的任何其他nhibernate查询方法中使用current_timestamp? 我当时在考虑制作某种类型的DbDateTime的IUserType类或某种东西来解决该问题,但我不知道确切地如何完成它。 有人有想法么? 我想要的例子:
  session.QueryOver<User>()
         .Where(u => u.CreatedOn > current_timestamp)
         .List();
    

解决方法

        您可以在QueryOver API中使用IProjection和SQL函数,如下所示:
var result = session.QueryOver<User>()
             .Where(Restrictions.GtProperty(
                Projections.Property<User>(u => u.CreatedOn),Projections.SqlFunction(\"current_timestamp\",new NHibernate.Type.TimestampType())))
             .List();
这将导致以下SQL:
SELECT this_.... FROM [User] this_ WHERE this_.CreatedOn > sysdatetime() ; 
    ,        这可能不适用于您的情况,但这可能有用
session.QueryOver<User>()
     .Where(u => u.CreatedOn > DateTime.Now)
     .List();