自己参照カテゴリ テーブル構造を EF Core にマッピングする
問題は、カテゴリなどの階層構造を取得する複雑さから発生します。 EF Core と LINQ の制限内で、テーブルとその ParentId 列。これに対処するために、再帰関数を使用してカテゴリを手動で走査し、ChildCategories プロパティを設定しました。
ただし、EF Core の全機能を活用したより効率的なソリューションが登場しました。
使用Single Include
を使用してツリーの一部をロードする以前の試みとは異なります。 Include() の場合、このアプローチには ChildCategories プロパティに対する 1 つの Include() が含まれます。これと、LINQ to Objects コンテキストへのクエリの具体化と組み合わせることで、EF Core のナビゲーション プロパティの修正でマッピングを処理できるようになります。
フィルタリングによる最適化取得
Toリポジトリの GetAll() メソッドの要求に応じて、カテゴリ ツリーのルート ノードのみを取得します。クエリが完了した後にフィルタが適用されます。実体化されています:
return Table .AsEnumerable() .Where(x => x.ParentId == null) .ToList();
AsEnumerable() を使用してクエリを LINQ to Objects コンテキストに実体化することにより、フィルターが適用される前にナビゲーション プロパティが修正されます。これにより、再帰関数を必要とせずに、目的の階層構造を効果的に取得する単一の SQL クエリが作成されます。
以上がEF Core は階層データ取得のために自己参照カテゴリ テーブルを効率的にマップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。