Sposób korzystania z PagedList w aplikacji internetowej opartej na ASP MVC w połączeniu z ViewModels.Mapowanie dużej listy jednostek w listę stron kodowych ViewModels
Chcę utworzyć listę stron kodowych Viewmodels, więc najpierw muszę odwzorować elementy na Viewmodels.
Podczas pobierania dużej listy jest ona bardzo powolna, ponieważ najpierw mapowanie jest wykonywane przed utworzeniem listy PagedList (co powoduje pobranie całej listy elementów).
Jaki jest najlepszy sposób rozwiązania tego problemu?
IEnumerable<InvoiceData> invoiceData = dataService.GetInvoiceData(locationId);
Mapper.CreateMap<InvoiceData, ViewModelInvoiceData>();
IEnumerable<ViewModelInvoiceData> vmInvoiceData = Mapper.Map<IEnumerable<InvoiceData>, IEnumerable<ViewModelInvoiceData>>(invoiceData);
IPagedList<InvoiceDataViewModel> pagedListVMInvoiceData = vmInvoiceData.ToPagedList(page, pageSize);
(Używam również ramy mapowania, ale to oczywiście ten sam problem z niestandardowej klasy mapper)
skończyłeś spróbuj użyć IQueryable? Czy jest obsługiwany przez twoją usługę danych? Użycie Iqueryable pozwoliłoby IPagedListowi odwieść zapytanie do bazy danych, ograniczając w ten sposób liczbę obiektów odwzorowanych tylko na to, co konieczne. –