Я работаю над приложением, в котором я хотел бы реализовать пейджинг. У меня есть следующий класс, который реализует отдельные критерии -
public class PagedData : DetachedCriteria
{
public PagedData(int pageIndex, int pageSize) : base(typeof(mytype))
{
AddOrder(Order.Asc("myId"));
var subquery = DetachedCriteria.For(typeof(mytype2))
.SetProjection(Projections.Property("mytype.myId"));
Add(Subqueries.PropertyIn("myId", subquery));
SetFirstResult((pageIndex - 1) * pageSize);
SetMaxResults(pageSize);
}
}
Это работает нормально - возвращает именно те данные, которые я пытаюсь получить. Проблема, с которой я сталкиваюсь, заключается в получении общего количества строк для навигации по моей странице. так как я использую setfirstresults и setmaxresults в моих независимых критериях, количество строк всегда ограничивается входящей переменной pageSize.
У меня такой вопрос: как я могу получить общее количество строк? Должен ли я просто создать еще один отдельный критерий для расчета количества строк? Если это так, это добавит туда и обратно в БД? Было бы лучше, если бы я не использовал отдельные критерии и использовал прямой критерий запроса, в котором я мог бы использовать фьючерсы? Или я могу каким-то образом использовать фьючерсы с тем, что я сейчас делаю.
Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация.
Спасибо