首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为层次结构编写QueryOver

如何为层次结构编写QueryOver
EN

Stack Overflow用户
提问于 2013-12-05 06:22:04
回答 1查看 298关注 0票数 0

我的数据库结构中有以下层次结构-

一个JobOrder有许多模板。 一个模板有多个 一个有许多 一个有一个状态,一个状态有一个(一对一)

我已经在NHibernate中将这些表映射到我的模型上,而且它也在正常工作。一对一的关系是这样的-

Item.hbm.xml:

代码语言:javascript
复制
<one-to-one name="Status" class="ItemStatus"></one-to-one>

Status.hbm.xml:

代码语言:javascript
复制
 <id name="Id" column="Id" type="long">
  <generator class="foreign" >
    <param name="property">Item</param>
  </generator>
 </id>
 <one-to-one name="Item" class="ItemInGroup" constrained="true"></one-to-one>

我想编写一个nhibernate QueryOver,它将返回所有作业顺序,这些作业顺序在其层次结构中至少有一个项,其状态为null。

我试着写了以下-

代码语言:javascript
复制
var jobOrders =
            Repository.QueryOver<Models.JobOrder>().Where(
                jo => jo.Templates.Any(t => t.Groups.Any(g => g.Items.Any(i => i.Status==  
                    null)))).List();

但它抛出了一个例外-

未识别的方法调用: System.Linq.Enumerable:Boolean AnyTSource

我该怎么写这个?

EN

回答 1

Stack Overflow用户

发布于 2013-12-05 22:25:33

您需要使用JoinQueryOverJoinAlias

有些类似的事情应该有效(没有测试,但你应该有个想法):

代码语言:javascript
复制
var jobOrders = Repository
    .QueryOver<Models.JobOrder>()
    .JoinQueryOver<Models.Template>(j => j.Templates)
    .JoinQueryOver<Models.Group>(t => t.Groups)
    .JoinQueryOver<Models.Item>(g => g.Items)
    .Where(i => i.Status == null)
    .List<Models.JobOrder>();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20392931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档