2

インターフェイスごとにオブジェクトの正しい数を取得するという問題に直面しました。

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

インターフェイス IDirty を実装する 2 つのクラスがあります。Count は、2 番目を無視して、1 つのクラスのオブジェクトの数を返します。

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 に答える