結果のページを表示するために使用している条件クエリがあります。また、すべてのアイテムの合計数を取得する必要があります。結果のページング用とカウント用の 2 つのクエリを使用するのではなく (.AddOrder() 以外は同一であるため)
public ICriteria StandardQuery {
get {
return NHibernateSesssionManager.GetSession.CreateCriteria<Person>.AddOrder("OrderProperty", Order.Desc);
}
public ICriteria CountQuery {
get{
return StandardQuery.SetProjection(Projections.Count("ID"));
}
明らかに、「列 "dbo.Person.ordercolumn" を含む CountQuery barfs は、集約関数にも GROUP BY 句にも含まれていないため、ORDER BY 句では無効です。」
これは理にかなっているので、基本的にはこのようなことをしたいと思っています。
public ICriteria CountQuery {
get{
return StandardQuery.RemoveOrders().SetProjection(Projections.Count("ID"));
}
このようなことをする方法はありますか?そのため、ページング用とカウント用の 2 つのクエリが重複する「リスク」を回避できます。明らかに、いずれかのクエリに対する変更は、もう一方にミラーリングする必要があり、これは私が好まないリスクです。あなたならどうしますか?