复杂的QueryOver

时间:2011-09-12 04:40:22

标签: nhibernate queryover

您好我必须将folowing 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中可以做那种uery吗?或者用NHibernate做最好的方法是什么?

谢谢,

DineshNS

2 个答案:

答案 0 :(得分:0)

我建议您使用HQL。

从NHibernate支持的所有查询方法来看,它最适合自由格式查询。

它唯一不直接支持的是子查询的外连接。对于子查询中没有匹配元素的项,您可以使用子查询(from A, (subquery) B where A.X = B.X)和UNION的隐式连接伪造它。

答案 1 :(得分:-1)

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