NHibernate session.Query <isomeinterface>()。Count返回错误的计数</isomeinterface>

时间:2013-03-12 10:42:03

标签: c# .net nhibernate

我遇到了通过接口获取正确的对象计数的问题:

var count = session.Query<IDirty>().Count();

有两个类实现接口IDirty。 Count返回一个类的对象数,忽略第二个类。

QueryOver只会抛出该项不唯一的异常。

var count2 = session.QueryOver<IDirty>().RowCount();

在内部它使用SingleOrDefault方法,这解释了它失败的原因......

获取项目列表工作正常 - 列表包括两种类型的对象:

var list= session.Query<IDirty>().ToList();

是否有任何解决方法可以在不枚举所有项目的情况下获得正确的计数?

2 个答案:

答案 0 :(得分:3)

session.QueryOver<IDirty>().ToRowCountQuery().List<int>().Sum()

答案 1 :(得分:1)

在我看来,这是一个错误,虽然我可以理解为什么解决这个问题并非易事。

您可以在https://nhibernate.jira.com处打开问题。在此期间,只需对实现IDirty.

的每种类型使用单独的查询