C# NHibernate DetachedCriteria-如何使用Oracle之类的工具;外连接集上的s NVL

C# NHibernate DetachedCriteria-如何使用Oracle之类的工具;外连接集上的s NVL,c#,nhibernate,C#,Nhibernate,我想创建DetachedCriteria,它将执行类似于以下SQL代码的操作: select * FROM PRICELIST pl LEFT OUTER JOIN PRICELISTDURATIONSHIFT sh ON sh.PRICELISTID = pl.ID WHERE sh.CUSTOMERID = :cust AND nvl(sh.DATEFROM, pl.DATEFROM) <= :dt ORDER BY nvl(sh.DATEFROM, pl.DATEFROM) DE

我想创建DetachedCriteria,它将执行类似于以下SQL代码的操作:

select *
FROM PRICELIST pl
LEFT OUTER JOIN PRICELISTDURATIONSHIFT sh ON sh.PRICELISTID = pl.ID
WHERE sh.CUSTOMERID = :cust
  AND nvl(sh.DATEFROM, pl.DATEFROM) <= :dt
ORDER BY nvl(sh.DATEFROM, pl.DATEFROM) DESC

我也在寻找类似的东西,但还没有找到解决办法

同时,我通过使用HQL而不是CriteriaAPI解决了这个问题

HQL有一个方法
coalesce
,可用于此目的

from PriceList as pl
left join pl.PriceListDurationShift as shift
where coalesce (shift.DateFrom, pl.DateFrom) <= :dt
order by coalesce (shift.DateFrom, pl.DateFrom) 
价格表中的
作为pl
左联合pl.PriceListDurationShift作为移位

在coalesce(shift.DateFrom,pl.DateFrom)中,可能可以使用Projections.SQLFunction解决,如下所示:
from PriceList as pl
left join pl.PriceListDurationShift as shift
where coalesce (shift.DateFrom, pl.DateFrom) <= :dt
order by coalesce (shift.DateFrom, pl.DateFrom)