NHibernate标准API - 如何添加一个子句来比较一个日期与另一个日期减去一个值

Phi*_*ale 8 nhibernate criteria

我正在尝试使用NHibernate构建一个标准对象,它将date1与date2相比减去一个值.在Sql Server中我会这样做:

select*from table where date1 <DateAdd(Day,2,date2)

任何人都可以告诉我如何在NHibernate中做到这一点?

干杯

编辑

我之前应该已经指定了这个,我想知道如何使用条件API来做到这一点.

此外,date1和date2是表中的列,因此在运行查询之前我不知道它们的值

Die*_*hon 8

好吧,完全一样的方式:-)

HQL:

session.CreateQuery("from Entity where Date1 < DateAdd(Day, 2, Date2)")
Run Code Online (Sandbox Code Playgroud)

SQL:

session.CreateSQLQuery(@"select * from table
                         where date1 < DateAdd(Day, 2, date2)")
       .AddEntity(typeof(Entity))
Run Code Online (Sandbox Code Playgroud)

标准:

session.CreateCriteria<Entity>()
       .Add(Restrictions.LtProperty(
            Projections.Property("Date1"),
            Projections.SqlFunction(
                        new SQLFunctionTemplate(NHibernateUtil.Date,
                                                "DateAdd(Day, 2, ?1)"),
                        NHibernateUtil.Date,
                        Projections.Property("Date2"))))
Run Code Online (Sandbox Code Playgroud)

在所有情况下,.List()都将执行查询并返回指定类型的对象列表.