Ich habe einige Probleme mit einer langsamen Abfrage in Entity Framework in C#. Ich habe eine Erweiterungsmethode mit dem Namen Page erstellt, um Paging zu handhaben, aber wenn ich es benutze, wird die Abfrage sehr langsam. Wenn ich einfach .Skip (page.Value * pageSize.Value) .Take (pageSize.Value) statt mit Page die Abfrage wird viel schneller. Ich nehme an, dass es alle Seiten vor dem Paging holt, wenn Sie mit Page arbeiten. Gibt es eine Möglichkeit dies zu verhindern oder mache ich etwas anderes falsch?Entity Framework Paging mit der Erweiterungsmethode ist langsam?
Abfrage:
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();
Erweiterungsmethode:
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;
}