2

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

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

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

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

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

它在内部使用 SingleOrDefault 方法,这解释了为什么它失败了......

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

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

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

4

2 回答 2

3

尝试

session.QueryOver<IDirty>().ToRowCountQuery().List<int>().Sum()
于 2013-03-12T13:37:57.793 回答
1

在我看来,这是一个错误,尽管我可以理解为什么修复它并非易事。

您可以在https://nhibernate.jira.com打开一个问题。同时,只需对实现的每种类型使用单独的查询IDirty.

于 2013-03-12T12:37:56.883 回答