@vadim911

Nhibernate, Paging, Count(*), OrderBy и производительность?

Коллеги,


Есть следующая задача: есть таблица со 100 000 записями. Необходимо сделать постраничный вывод, с сортировкой и фильтрацией. Какой способ будет наиболее оптимальным, чтобы сортировка и фильтрация происходила на сервере базы данных, а не по коллекции в памяти приложения?


Как посчитать Count(*) с помощью NHibernate?
  • Вопрос задан
  • 3073 просмотра
Пригласить эксперта
Ответы на вопрос 2
Smileek
@Smileek
Постраничный вывод:
return Session.CreateCriteria<T>()
.AddOrder(Order.Asc("Id"))
.SetFirstResult((pageNumber - 1) * pageSize)
.SetMaxResults(pageSize)
.List();


Count:
return (int) session.CreateCriteria<T>()
.SetProjection(Projections.Count("Id")); // Любое поле
.UniqueResult();


Более эстетичный вариант с NHibernate 3.0
Paging:
return Session.QueryOver<T>()
.OrderBy(x => x.Id).Asc
.Take(pageSize)
.Skip((pageNumber - 1) * pageSize)
.List();


Count:
return Session.QueryOver<T>().RowCount();
Ответ написан
Комментировать
@vadim911 Автор вопроса
Спасибо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы