C#でEntity Frameworkのクエリが遅いという問題があります。ページングを処理するために私はPageという拡張メソッドを作成しましたが、私がそれを使用すると、クエリは本当に遅くなります。私がちょうど.Skip(page.Value * pageSize.Value).Take(pageSize.Value)を使うのではなく、Pageを使うのではなく、もっと速くなります。私はページでそれをすることは、ページング前にすべての連絡先を取得すると思います。これを防ぐ方法はありますか、他の何かを間違ってやっていますか?拡張メソッドを使用したエンティティフレームワークのページングは遅いですか?
問合せ:
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();
拡張方法:
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;
}