2008-10-02 71 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。