NHibernate查询问题
Posted
技术标签:
【中文标题】NHibernate查询问题【英文标题】:NHibernate Query problem 【发布时间】:2008-10-02 15:08:43 【问题描述】:我对 NHibernate 还是很陌生,开始摸索。
我有一个有点像树的域模型。
基金有周期有选择有审计 现在我想获得特定基金的所有审计
如果我用 SQL 做的话会是这样的
选择 A.* 来自审计 A 加入选择 S ON A.fkSelectionID = S.pkID 加入周期 P ON S.fkPeriodID = P.pkID 加入基金 F ON 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
【讨论】:
您缺少对 Periods 的连接... Fund 和 Selection 之间没有直接关系 Mausch 你是对的。我错过了链接资金和选择的期间,我相应地更新了答案。【参考方案2】:session.CreateCriteria ( typeof(Audit) )
.CreateCriteria("Selection")
.CreateCriteria("Period")
.CreateCriteria("Fund")
.Add(Restrinction.IdEq(fundId))
【讨论】:
【参考方案3】:使用 LINQ ....
(来自 Fund.Periods 中的 var p 让fundPeriodSelections = p.Selections 从fundPeriodSelections中的var选择 选择 selection.Audit).ToList()
...但它确实取决于那些多对多/一对多关系是双向的。另外,我在想您可能需要在 Period / Fund 表之间的映射表/类..但我想您已经考虑过了。
希望上面的 LINQ statemanet 可以工作......它取决于那些被提及的属性,但它是我们在项目中使用的一个真正清理代码的 apraoch。
【讨论】:
以上是关于NHibernate查询问题的主要内容,如果未能解决你的问题,请参考以下文章