2012-01-19 53 views
1

中加入多個條件Doe的任何人都知道如何在LINQ to NHIBERNATE中使用多個條件進行連接? 有一個條件加入看起來是這樣的:Linq到nHibernate v3.2 - 在條款

var Query = from p in Session.Parent 
    join c in child on p.id equals c.parent_id 
    select p 

我的SQL查詢:

Select * 
from parent t1 
left join Child t2 
    on t1.id = t2.parent_id 
    and t2.age > 18 

我發現多個條件中的一個語法LINQ to SQL和它的工作原理(我試過在LinqPad) 但當我試圖在nHibernate中執行此代碼時,我收到異常: 「方法或操作未實現」。對LINQ to SQL的語法是:

var Query = from p in Session.Parent 
    join c in child on p.id equals c.parent_id into pc 
    from pcg in pc.Where(c => c.age > 18) 
    select p.PigProductid 

看來,這個功能在LINQ還沒有實現NHibernate的,但 也許我錯了(我希望我)。

+0

是,NHibernate的LINQ提供程序讓我時而憂傷。 – Nagg

回答

0

最簡單的方法是對父類中的孩子進行引用或收集。

也許folwwing可以工作

var query = from p in Session.Parent 
      from c in Session.Child.Where(c => c.age > 18) 
      where p.Id == c.parent_id 
      select p.PigProductid; 
+0

謝謝,我試過這個,不幸的是它不工作。 關於參考和收藏 - 你說得對,如果你有這些,nHibernate 知道要做自己的參與,但通常引用是基於 的一個關鍵。我想要多於一個鍵的連接。不管怎樣,謝謝你... – OlgaB

+0

NHibernate支持多個列的引用。我在日常工作中有很多。你可以發佈你的表格結構嗎? – Firo

+0

對不起,我的錯誤,我想過,你是對的,我們可以設置多個領域的參考。 但據我所知,參考生成內部連接。你知道是否有一種方法來生成引用的左連接? – OlgaB