1

我对 NHibernate 很陌生,并开始找到自己的方式。

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

基金有期间有选择有审计
现在我想获得特定基金的所有审计

如果我用 SQL 做的话会是这个样子

SELECT A.*
FROM Audit A
JOIN Selection S ON A.fkSelectionID = S.pkID
JOIN Period P ON S.fkPeriodID = P.pkID
JOIN Fund F ON P.fkFundID = F.pkID
WHERE F.pkID = 1

所有输入表示赞赏!

4

3 回答 3

1

尝试这个

select elements(s.Audits)
from Fund as f inner join Period as p inner join Selection as s  
where f = myFundInstance  
于 2008-10-02T15:21:51.070 回答
1
session.CreateCriteria ( typeof(Audit) )
  .CreateCriteria("Selection")
  .CreateCriteria("Period")
  .CreateCriteria("Fund")
  .Add(Restrinction.IdEq(fundId))
于 2008-10-18T00:44:03.040 回答
0

使用 LINQ ....

(from var p in Fund.Periods let fundPeriodSelections = p.Selections from var selection in fundPeriodSelections select selection.Audit).ToList()

...但它确实取决于那些多对多/一对多的关系是双向的。另外,我在想您可能需要在 Period / Fund 表之间的映射表/类..但我想您已经考虑过了。

希望上面的 LINQ statemanet 可以工作……它取决于那些被提及的属性,但这是我们在项目中使用的一种方法,它真正清理了代码。

于 2008-10-28T13:35:39.257 回答