2013-03-12 32 views
2

我所面臨的問題與通過接口獲取對象的正確的計數:NHibernate的session.Query <ISomeInterface>()計數返回錯誤計數

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

有實現接口IDirty 2類。 Count返回一個類的對象數,忽略第二個類的對象數。

QueryOver只是引發該項目不唯一的異常。

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

內部它使用的SingleOrDefault方法,如何解釋失敗的原因...

獲取的項目列表中工作正常 - 這其中包括類型的對象:

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

有任何解決方法以獲得正確的計數而不枚舉所有項目?

+0

,它改變的東西,如果你在一個單一的房地產項目(ID?)和執行上的計數? – jbl 2013-03-12 13:25:21

回答

3

嘗試

session.QueryOver<IDirty>().ToRowCountQuery().List<int>().Sum() 
在QueryOver場景
+0

不錯。我喜歡這個解決方法比我的好得多。 – 2013-03-12 15:04:05

+0

這不會編譯。 – xll 2013-03-12 21:25:22

+0

var count = session.QueryOver ().ToRowCountQuery()。List ().Sum();成功了! – xll 2013-03-12 21:36:01

1

在我看來,這是一個錯誤,雖然我可以明白爲什麼修復它是不重要的。

您可以在https://nhibernate.jira.com處打開問題。在此期間,只要使用單獨的查詢對每種類型實現IDirty.