Nhibernate 复合查询器

Nhibernate 复合查询器,nhibernate,queryover,Nhibernate,Queryover,嗨,我必须把下面的sql翻译成QueryOver 有可能吗?我的实际问题可能更复杂。但我一直停留在这个阶段 SELECT InnerQuery.USERID, InnerQuery.TRAFFICZONEID, InnerQuery.StatusCategory, COUNT(*) AS LineCount FROM ( SELECT MissionID, UserId, TRAFFICZONEID, CASE WHEN status BETWEEN 1

嗨,我必须把下面的sql翻译成QueryOver 有可能吗?我的实际问题可能更复杂。但我一直停留在这个阶段

SELECT InnerQuery.USERID,
InnerQuery.TRAFFICZONEID,
InnerQuery.StatusCategory,
COUNT(*) AS LineCount
FROM (
SELECT MissionID,
    UserId,
    TRAFFICZONEID,
    CASE 
        WHEN status BETWEEN 1
                AND 5
            THEN 1
        WHEN status BETWEEN 6
                AND 8
            THEN 2
        WHEN status BETWEEN 9
                AND 17
            THEN 3
        ELSE 0
        END AS [StatusCategory]
FROM mission
) AS InnerQuery
LEFT OUTER JOIN trafficzone t ON InnerQuery.TRAFFICZONEID = t.Trafficzoneid

GROUP BY InnerQuery.USERID,
InnerQuery.TRAFFICZONEID,
InnerQuery.StatusCategory
有没有可能在QueryOver做这种嘲弄?或者,使用NHibernate的最佳方式是什么

谢谢,


对于复杂的查询,您可以在数据库中创建一个视图,并从NHibernate使用它

对于复杂的查询,您可以在数据库中创建一个视图,并从NHibernate使用它

我建议您为此使用HQL

在NHibernate支持的所有查询方法中,它是最适合自由形式查询的方法


它唯一不直接支持的是子查询的外部联接。您可以对A、子查询B(其中A.X=B.X)中的子查询使用隐式联接,并对子查询中没有匹配元素的项使用并集来模拟该情况。

我建议您对此使用HQL

在NHibernate支持的所有查询方法中,它是最适合自由形式查询的方法

它唯一不直接支持的是子查询的外部联接。您可以使用隐式连接来模拟,子查询A、子查询B(其中A.X=B.X)中的子查询以及子查询中没有匹配元素的项的并集