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查询问题的主要内容,如果未能解决你的问题,请参考以下文章

nhibernate中的命名查询错误

查询与 NHibernate 关系的一些属性

NHibernate 执行简单查询需要更长的时间

NHibernate查询问题

使用 NHibernate 的示例查询

NHibernate3剖析:Query篇之NHibernate.Linq增强查询