在NHibernate QueryOver语法中使用current_timestamp

时间:2011-05-27 16:59:52

标签: nhibernate datetime timestamp queryover

是否可以在除SQL和HQL之外的任何其他nhibernate查询方法中请求使用current_timestamp?

我正在考虑制作某种类型的DbDateTime IUserType类以解决问题,但不知道如何完成它。

有人有什么想法吗?

我想要的例子:

  session.QueryOver<User>()
         .Where(u => u.CreatedOn > current_timestamp)
         .List();

2 个答案:

答案 0 :(得分:2)

您可以在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() ; 

答案 1 :(得分:0)

这可能不适用于您的情况,但这可能有效

session.QueryOver<User>()
     .Where(u => u.CreatedOn > DateTime.Now)
     .List();