У меня есть запрос критерия, который я использую для отображения страниц результатов. Мне также нужно получить общее количество всех предметов. Вместо того, чтобы иметь два запроса, один для разбивки на страницы результатов и один для подсчета (поскольку они идентичны, кроме .AddOrder ()
public ICriteria StandardQuery {
get {
return NHibernateSesssionManager.GetSession.CreateCriteria<Person>.AddOrder("OrderProperty", Order.Desc);
}
public ICriteria CountQuery {
get{
return StandardQuery.SetProjection(Projections.Count("ID"));
}
Очевидно, что countQuery barfs с "Column" dbo.Person.ordercolumn "недопустим в предложении ORDER BY, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY."
Это имеет смысл, поэтому в основном я хочу сделать что-то вроде этого.
public ICriteria CountQuery {
get{
return StandardQuery.RemoveOrders().SetProjection(Projections.Count("ID"));
}
Есть ли способ сделать что-то подобное? Так что я избавлен от «риска» наличия двух повторяющихся запросов, одного для подкачки страниц и одного для подсчета. Очевидно, что любое изменение в одном запросе должно быть отражено на другом, и это риск, который мне не нравится. Что бы вы сделали?