2011-07-27 64 views
2
多個表

我不能建立在NHibernate的JoinQueryOver拉姆達表達式解決下面的SQL命令:JoinQueryOver用與NHibernate

SELECT 
    A.STATUS, 
    B.NUMBER, 
    B.OTHER_NUMBER, 
    A.Date01, 
    A.Date02 
FROM 
    B, 
    C, 
    A 
WHERE 
     A.ID = C.ID 
    AND  B.ID = C.ID 

在上述SQL命令的所有表都與相同的名稱(A,B實體,C),內部連接在WHERE子句中。

如何構建NHibernate lambda查詢?

感謝,

羅斯福

回答

4
A a = null; 
B b = null; 
var result = session.QueryOver<C>() 
    .JoinAlias(c => c.A,() => a) 
    .JoinAlias(c => c.B,() => b) 
    .Select(c => a.Status, c => b.Number, c => b.Other_Number, c => a.Date01, c => a.Date02) 
    .List<object[]>(); 
+0

這不會的情況下,工作的時候,我們需要設置爲A或B的實體條件。 Nhibernate不會爲查詢找到這些別名 – Anubis

+0

@Anubis對不起,我不明白。 '.Where((=)a.Prop == Something)'適合我 – Firo

+0

Fwiw,OP確實要求'.JoinQueryOver'而不是'JoinAlias'。 – ruffin