public class Person
{
public int Id {get;set;}
public int Name {get;set;}
}
- Мне нужно создать сетку с разбивкой по страницам и упорядочиванием
- В моей базе данных около 100 тысяч человек
Моя база данных насчитывает около 100 тысяч человек
< strong>1) Получите все элементы в первый раз и после этого воспользуйтесь преимуществами кэша первого уровня NHibernate, пример:
personRep.FindAll().OrderBy(s =>s.Name).AsPagination(pageNumber,pageSize);
Примечание: AsPagination — это метод расширения...
2) Получить только реальную страницу из базы данных, пример:
public virtual IList GetPaginedList(int __pageIndex, int __pageSize,out int __total)
{
var _rowCount = Session.CreateCriteria(typeof(T))
.SetProjection(Projections.RowCount()).FutureValue();
var _results = Session.CreateCriteria(typeof(T))
.SetFirstResult(__pageIndex * __pageSize)
.SetMaxResults(__pageSize)
.Future();
__total = _rowCount.Value;
return _results;
}
Подробнее здесь: https://stackoverflow.com/questions/413 ... ter-option