NHibernate查询问题

时间:2020-03-06 15:01:55  来源:igfitidea点击:

我对NHibernate还是很陌生,并开始找到解决方法。

我有一个有点像一棵树的域模型。

资金有期有选择有审计
现在,我想获得一个特定基金的所有审计

如果我用SQL编写,它将看起来像这样

选择一个。*
从审计A
加入选择S ON A.fkSelectionID = S.pkID
加入期间P ON S.fkPeriodID = P.pkID
在P.fkFundID = F.pkID上加入基金F
在哪里F.pkID = 1

所有输入表示赞赏!

解决方案

试试这个

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

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

使用LINQ ....

(摘自Fund.Periods中的var p
让fundPeriodSelections = p.Selections
从fundPeriodSelections中的var选择中
选择selection.Audit).ToList()

...但是这确实取决于2对多/多/一对多关系。另外,我还以为我们可能在"期间/资金"表之间需要一个映射表/类。.但是我想我们已经考虑过了。

希望上面的LINQ statemanet能够起作用...它取决于那些mentioend属性,但这是我们在项目中使用的apraoch,它确实清理了代码。