2008-10-02 82 views
1

我對NHibernate很陌生,開始尋找解決方法。NHibernate查詢問題

我有一個有點像樹的域模型。

基金已經時期有選擇有審計
現在我想獲得的所有審計特定基金

應該是這樣的,如果我在SQL

SELECT A.使它*
FROM審計
JOIN選擇S ON A.fkSelectionID = S.pkID
JOIN週期P ON S.fkPeriodID = P.pkID
JOIN基金F於P.fkFundID = F.pkID
其中F.pkID = 1

所有輸入讚賞!

回答

1

嘗試此

select elements(s.Audits) 
from Fund as f inner join Period as p inner join Selection as s 
where f = myFundInstance 
+0

你錯過了加入期間...基金和選擇之間沒有直接關係 – 2008-10-05 14:33:13

1
session.CreateCriteria (typeof(Audit)) 
    .CreateCriteria("Selection") 
    .CreateCriteria("Period") 
    .CreateCriteria("Fund") 
    .Add(Restrinction.IdEq(fundId)) 
0

使用LINQ ....

(從Fund.Periods 讓fundPeriodSelections =從變種選擇p.Selections 在fundPeriodSelections 選擇選擇變種p .Audit).ToList()

...但它取決於那些多對多/一對多關係2種方法。另外,我認爲你可能需要在週期/基金錶中的映射表/類,但我想你已經考慮過了。

希望上面的LINQ statemanet能夠工作......它依賴於那些mentioend屬性,但它是我們在項目中使用的真正清理代碼的apraoch。