ページネーションは、特に大規模なデータセットを扱う場合、アプリケーション開発の重要な側面です。 C# の Entity Framework (EF) Core 8 は、効率的なページネーションを実装するための強力な機能を提供します。このガイドでは、EF Core 8 を使用してページネーションを実装するためのベスト プラクティスを例とともに説明します。
EF Core は、ページネーションを効率的に実装するために不可欠な Skip メソッドと Take メソッドを提供します。 Skip を使用すると、指定した行数をスキップできます。Take を使用すると、返される行の数が制限されます。
var pageNumber = 1; var pageSize = 10; var result = dbContext.YourEntity .OrderBy(e => e.SortingProperty) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList();
この例では、pageNumber と pageSize によって現在のページとページごとの項目数がそれぞれ決まります。
表示目的のデータ取得などの読み取り専用操作の場合は、変更追跡のオーバーヘッドを回避してパフォーマンスを向上させるために AsNoTracking の使用を検討してください。
var result = dbContext.YourEntity .AsNoTracking() .OrderBy(e => e.SortingProperty) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList();
これは、取得したエンティティを更新したり変更を保存したりする予定がない場合に特に便利です。
並べ替えに使用される列にインデックスが付けられていることを確認してください。インデックス付き列により、並べ替え操作のパフォーマンスが大幅に向上します。
// Ensure SortingProperty is indexed modelBuilder.Entity<YourEntity>() .HasIndex(e => e.SortingProperty);
列のインデックスが効率的に作成されると、並べ替えが高速化され、全体的なページネーションのパフォーマンスが向上します。
すべてのデータを取得せずにレコードの総数を決定するには、ページネーションを適用する前に Count を使用します。これにより、不要なデータのロードが回避されます。
var totalRecords = dbContext.YourEntity.Count(); var result = dbContext.YourEntity .OrderBy(e => e.SortingProperty) .Skip((pageNumber - 1) * pageSize) .Take(pageSize) .ToList();
データが同時に変更される可能性があるシナリオでページネーションにスキップとテイクを使用する場合は注意してください。このような場合、一貫性を高めるためにキーセットのページネーションなどの代替方法を使用することを検討してください。
ページネーションを効率的に実装することは、大規模なデータセットを扱うアプリケーションのパフォーマンスを向上させるために非常に重要です。これらのベスト プラクティスに従うことで、C# で EF Core 8 を使用するときにページネーション ロジックが最適化され、スケーラブルであることを確認できます。
以上がC# | EF Core 8 を使用したページネーションのベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。