限制子集合的NHibernate查询

限制子集合的NHibernate查询,nhibernate,Nhibernate,我在这个网站上看过很多例子,但我仍然不知道如何做到这一点: 举个例子,假设我有一个持续的场馆,每个场馆都有一组事件,其中每个事件都有预订日期。如果我想获得所有的场地谁的下一个活动是“婚礼”类型的,我该怎么办?它需要根据子集合中特定元素的值(在本例中为第一个ReservationDateToday)进行选择,该元素由不同的限制(“类型”==“婚礼”)确定 我已经研究了使用CreateCriteria、QueryOver、DetachedCriteria、JoinOver和NH查询选项的各种查询(我

我在这个网站上看过很多例子,但我仍然不知道如何做到这一点:

举个例子,假设我有一个持续的场馆,每个场馆都有一组事件,其中每个事件都有预订日期。如果我想获得所有的场地谁的下一个活动是“婚礼”类型的,我该怎么办?它需要根据子集合中特定元素的值(在本例中为第一个ReservationDateToday)进行选择,该元素由不同的限制(“类型”==“婚礼”)确定

我已经研究了使用CreateCriteria、QueryOver、DetachedCriteria、JoinOver和NH查询选项的各种查询(我不想使用HQL),但我仍然不知所措

谢谢你的帮助


Michael

我已经创建了一个非常详细的示例,说明如何处理这些情况。请参见此处的所有详细信息:

关键是创建几个表示为
DetachedCriteria
子查询。使用
alias
ing,我们可以在它们之间进行通信(传递
ID

最后,我们可以选择根实体的干净/平坦结构。。。同时具有基于引用集合的全部过滤功能


这种方法最大的优点在于,我们可以应用分页(
Take()
Skip()
),因为最终选择位于根表的顶部,所以您使用的是多对多关系。到目前为止你试过什么?你被困在哪里了?不,这是一对多:一个场地对多个活动。坦率地说,我不确定从哪里开始。我必须查询场地,并以某种方式查询每个场地的相关活动,以找到比今天晚的最早的活动,然后仅当该活动存在且具有“婚礼”类型时才返回场地。NH图书馆似乎有许多不同的方向,我不知道如何在其中任何一个方向上做到这一点。它可以让你非常清楚地知道如何做到这一点。它不是那么复杂,而是复杂。最后,您可以得到真正强大的查询,应用在DB引擎上。。。返回一小部分数据;)看来这对我应该有用,一旦我证实了这一点,我会很乐意投票支持你。碰巧的是,你的例子实际上非常接近我的真实例子,而不是我在这里用来说明的例子。不过,我确实有几个问题,我在你给我的链接上发表了评论。谢谢。我把我的想法/答案附在你的观点之后。一般来说,我会说,SelectList是一种提高阅读能力的方法,我会选择更多的值。Select(我想)也可以使用。在最深的查询中,我们需要选择2个值,因为这两个值都将在以后使用。如果你说的是像Take TOP这样的优化。。订购人。。。我会说:试试看。因为它可能会有帮助,但我想说,这可以留在数据库引擎上。它将负责制定最佳执行计划。但是为什么不尝试改进它呢;)