计算nhibernate中模型的第二级集

计算nhibernate中模型的第二级集,nhibernate,Nhibernate,我想使用条件查询对NHibernate中的模型集进行计数 帐户模型具有联系人(集),联系人模型具有地址(集) 我想通过输入Account对象来计算地址 我已经通过简单的foreach循环实现了临时的 如果有人知道,请帮助我 高级版谢谢。谢谢Radim Köhler 我通过以下方式找到了解决方案: var count=(Int32)Session.CreateCriteria(typeof(Account)) .Add(Restrictions.Eq(“Id”,account.Id)) .Crea

我想使用条件查询对NHibernate中的模型集进行计数

帐户模型具有联系人(集),联系人模型具有地址(集)

我想通过输入Account对象来计算地址

我已经通过简单的foreach循环实现了临时的

如果有人知道,请帮助我

高级版谢谢。

谢谢Radim Köhler

我通过以下方式找到了解决方案:

var count=(Int32)Session.CreateCriteria(typeof(Account))
.Add(Restrictions.Eq(“Id”,account.Id))
.CreateCriteria(“联系人”,“联系人”,JoinType.InnerJoin,限制。IsNotEmpty(“地址”))
.SetProjection(Projections.Count(“Id”)).UniqueResult()

然后我使用了以下查询条件:

var count = (Int32)Session.CreateCriteria(typeof(Address))
                    .CreateCriteria("Contact", "Contact",JoinType.InnerJoin)
                    .Add(Restrictions.Eq("Account.Id",accountId))
                    .SetProjection(Projections.Count("Id")).UniqueResult();

这给了我通过优化查询想要的实际结果。

最终我找到了解决方案:var count=(Int32)Session.CreateCriteria(typeof(Account)).Add(Restrictions.Eq(“Id”,Account.Id)).CreateCriteria(“Contacts”,“Contacts”,JoinType.InnerJoin,Restrictions.IsNotEmpty(“address”)).SetProjection(Projections.Count(“Id”)).UniqueResult();不知道为什么投票被否决。。。这是一个有趣的问题,你自己的答案也很好。请把它从一个评论中拿出来,并把它作为真实的(稍后也接受)答案附加在后面。。。以后可能会有用。谢谢