Ho alcuni problemi con una query lenta in Entity Framework in C#. Ho creato un metodo di estensione chiamato Pagina per gestire il paging, ma quando lo uso la query diventa molto lenta. Se faccio solo .Skip (page.Value * pageSize.Value) .Take (pageSize.Value) invece di usare Page la query diventa molto più veloce. Immagino che farlo con Page recupera tutti i contatti prima del paging. C'è un modo per prevenire questo o sto facendo qualcos'altro di sbagliato?Il paging del framework di entità con il metodo di estensione è lento?
Query: metodo
var contacts = db.Contacts
.Where(x => x.AccountID == accountID && x.Deleted == false)
.OrderByDescending(x => x.FirstName)
.ThenBy(x => x.LastName)
.ThenBy(x => x.CreatedDate)
.Page(page, pageSize);
return contacts.ToList();
Estensione:
public static IEnumerable<T> Page<T>(this IEnumerable<T> elements, int? page, int? pageSize)
{
if (page.HasValue && pageSize.HasValue)
return elements.Skip(page.Value * pageSize.Value).Take(pageSize.Value);
else
return elements;
}