2012-09-26 52 views
1

我有三個表(表A,B和C)。 我想做到以下幾點: 左連接A和B和LEFT JOIN A和C.如何使用NHibernate左連接兩個不同的表

現在我已經用個createCriteria,做用加入jointype其工作高達某一點,但它拋出查詢例外。看來,這是因爲它似乎試圖離開先連接B爲C,而不是A和C.

代碼:

currencies = session.CreateCriteria(typeof(Currency), "TableA")     
      .CreateCriteria("FXRates", "TableB", 
          JoinType.LeftOuterJoin, 
          Expression.Eq("fxrate.RateDate",date)) 
      .CreateCriteria("FundingRates", "TableC", 
          JoinType.LeftOuterJoin, 
          Expression.Eq("fundingrate.RateDate", date)) 
      .Add(Restrictions.IsNotNull("currency.code")) 
      .List<Currency>(); 

道歉,在先進的,如果我還遺漏了什麼或沒有提供足夠的細節,讓我知道如果你需要更多...

回答

1

您可以使用NHibernate的「QueryOver」做到這一點:

session.QueryOver<Item_A>() 
    .Left.JoinQueryOver(item_A => item_A.Item_B) 
    .Left.JoinQueryOver(item_A => item_A.Item_C) 
    .TransformUsing(Transformers.DistinctRootEntity) 
    .List(); 
+0

感謝安東,我將看看這一點,並儘快給您。 – Rubans