我的数据库结构中有以下层次结构-
一个JobOrder有许多模板。 一个模板有多个组 一个组有许多项 一个项有一个状态,一个状态有一个项(一对一)
我已经在NHibernate中将这些表映射到我的模型上,而且它也在正常工作。一对一的关系是这样的-
Item.hbm.xml:
<one-to-one name="Status" class="ItemStatus"></one-to-one>Status.hbm.xml:
<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。
我试着写了以下-
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
我该怎么写这个?
发布于 2013-12-05 22:25:33
您需要使用JoinQueryOver或JoinAlias。
有些类似的事情应该有效(没有测试,但你应该有个想法):
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>();https://stackoverflow.com/questions/20392931
复制相似问题