Fluent nhibernate FluentNHibernate多对多条件子计数
考虑以下实体:Fluent nhibernate FluentNHibernate多对多条件子计数,fluent-nhibernate,fluent-nhibernate-mapping,Fluent Nhibernate,Fluent Nhibernate Mapping,考虑以下实体: Package Manifest Content ---------- ---------- ---------- Id PackageId Id Name ContentId Name Status 这种关系是多对多的,其中一个包可以有多个内容,而内容可以属于多个包 我想做的是,对于给定的包.Id,获取
Package Manifest Content
---------- ---------- ----------
Id PackageId Id
Name ContentId Name
Status
这种关系是多对多的,其中一个包可以有多个内容,而内容可以属于多个包
我想做的是,对于给定的包.Id
,获取具有特定状态的所有内容的计数
我的映射工作得很好,但我还无法找出如何在不加载内容的情况下实现内容的条件计数。一个选项是在映射中使用ApplyChildFilter
,并与extrallazyload
一起使用,但这意味着我必须为此创建一个专用属性
有没有一种方法可以在不依赖于CreateSQLQuery
的情况下实现这一点?以下查询对您有用吗
session
.QueryOver<Package>()
.JoinQueryOver(x => x.Manifest)
.JoinQueryOver(x => x.Content)
.Where(x => x.Status == someStatus)
.Select(Projections.RowCount())
.FutureValue<int>()
.Value
会话
.QueryOver()
.JoinQueryOver(x=>x.Manifest)
.JoinQueryOver(x=>x.Content)
.Where(x=>x.Status==someStatus)
.Select(Projections.RowCount())
.未来价值()
价值
问题在于清单没有显式映射,因为它是通过HasManyToMany.Table(“清单”).ParentKeyColumn(“PackageId”).ChildKeyColumn(“ContentId”)隐式映射的。
。如果我为清单添加了显式映射和属性,我认为您的建议会起作用,但我希望能找到某种方法来避免这种情况(现在只是使用SQL基本上完成这种连接)。