Производительность NHibernate Paging (лучший вариант)C#

Место общения программистов C#
Anonymous
Производительность NHibernate Paging (лучший вариант)

Сообщение Anonymous »

В этом простом случае:

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

Вернуться в «C#»