我对NHibernate很新,并开始寻找解决方法。
我有一个有点像树的域模型。
资金有期间有选择有审计
现在我想获得特定基金的所有审计
如果我在SQL
中创建它,会是这样的 SELECT A. *
来自审计A
JOIN Selection S ON A.fkSelectionID = S.pkID
JOIN Period P ON S.fkPeriodID = P.pkID
加入基金F ON P.fkFundID = F.pkID
在哪里F.pkID = 1
所有输入都赞赏!
答案 0 :(得分:1)
试试这个
select elements(s.Audits)
from Fund as f inner join Period as p inner join Selection as s
where f = myFundInstance
答案 1 :(得分:1)
session.CreateCriteria ( typeof(Audit) )
.CreateCriteria("Selection")
.CreateCriteria("Period")
.CreateCriteria("Fund")
.Add(Restrinction.IdEq(fundId))
答案 2 :(得分:0)
使用LINQ ....
(来自Fund.Periods的var p 让fundPeriodSelections = p.Selections 来自fundPeriodSelections中的var选择 选择selection.Audit).ToList()
......但它确实取决于那些多对多/一对多关系是双向的。另外,我原本以为你可能需要在期间/基金表中使用映射表/类..但我想你已经考虑过了。
希望上面的LINQ状态网工作...它取决于那些mentioend属性,但它是我们在我们的项目中使用的apraoch,它真正清理了代码。