Что здесь происходит?
1. Из репозитория берётся метод, использующий постраничный вывод данных.
2. Этот метод передаётся в метод, который инкапсулирует логику работы со страницами.
3. Всё это оборачивается в using unit of work'а (uow = Unit of work), в котором создается Entity контекст.
4. Возвращается в дочернем экшене.
Это похоже на ASP.NET WebForms Control (.ascx)
[ChildActionOnly]
public
PartialViewResult GetExclusiveVideo(int count, int page = 1)
{
return InUow(() => PartialView(Paged(_videoItemRepository.ExclusiveVideos,
page,
count)));
}
private
TModel InUow<TModel>(Func<TModel> func)
{
using (_unitOfWorkFactory.Create())
{
return
func();
}
}
private
TModel InUow<TModel>(Func<IUnitOfWork, TModel>
func)
{
using (var uow = _unitOfWorkFactory.Create())
{
return func(uow);
}
}
private
IEnumerable<TModel>
Paged<TModel>(Func<int, int, IEnumerable<TModel>> pagedMethod,
int page, int count)
{
var skip = (page - 1)*count;
return pagedMethod(skip, count);
}
Спасибо за внимание.