Код: Выделить всё
return GetSession()
.ToPagedList(page, pageSize,
x=> x.SetFetchMode(DomainModelHelper.GetAssociationEntityNameAsPlural(), FetchMode.Eager));
У меня есть стандартный метод расширения подкачки, и этот метод расширения должен иметь перегрузку, в которую я могу передавать дополнительные методы ICriteria, чтобы дополнительно настроить FetchMode или что-то еще.
Метод расширения:
Код: Выделить всё
public static class CriteriaExtensions
{
public static PagedList ToPagedList(this ISession session, int page, int pageSize) where T : Entity
{
var totalCount = TotalCount(session);
return new PagedList(session.CreateCriteria()
.SetFirstResult(pageSize * (page - 1))
.SetMaxResults(pageSize * page)
.Future().ToList(), page, pageSize, totalCount);
}
public static PagedList ToPagedList(this ISession session, int page, int pageSize, Func action) where T : Entity
{
var totalCount = TotalCount(session);
...
}
private static int TotalCount(ISession session) where T : Entity
{
return session.CreateCriteria()
.SetProjection(Projections.RowCount())
.FutureValue().Value;
}
}
Без перегрузки это выглядело бы так:
edit:
Без перегрузки это выглядело бы так:
edit:
Без перегрузки это выглядело бы так:
edit:
Без перегрузки это выглядело бы так:
edit:
Без перегрузки это выглядело бы так: р>
Код: Выделить всё
return GetSession()
.CreateCriteria()
.SetFetchMode(DomainModelHelper.GetAssociationEntityNameAsPlural(), FetchMode.Eager)
.ToPagedList(page, pageSize);
Код: Выделить всё
public static class CriteriaExtensions
{
public static PagedList ToPagedList(this ICriteria criteria, int page, int pageSize) where T : Entity
{
var copiedCriteria = (ICriteria) criteria.Clone();
var totalCount = TotalCount(criteria);
return new PagedList(copiedCriteria
.SetFirstResult(pageSize * (page - 1))
.SetMaxResults(pageSize * page)
.Future().ToList(), page, pageSize, totalCount);
}
private static int TotalCount(ICriteria criteria)
{
return criteria
.SetProjection(Projections.RowCount())
.FutureValue().Value;
}
}
Какой подход вы бы предложили?
Подробнее здесь: https://stackoverflow.com/questions/356 ... eria-calls