1. ホーム
  2. c#

Entity Frameworkは再帰的な階層をどのように扱うのですか?Include()はそれで動作しないようです。

2023-11-01 14:07:49

質問

私は Item . Item には Category .

Category があります。 ID , Name , Parent そして Children . Parent そして ChildrenCategory のものでもあります。

LINQ to Entitiesクエリを実行すると、特定の Item に対してクエリを実行すると、関連する Category を使用しない限り、関連する Include("Category") メソッドを使用しなければなりません。しかし、これでは、親と子を含む完全なカテゴリを持ってきません。私は、次のようにすることができます。 Include("Category.Parent") しかし、このオブジェクトはツリーのようなもので、再帰的な階層があり、どこで終わるのかわかりません。

どうすればEFが完全に Category を、親と子、親とその親と子、といったように完全に読み込むようにするにはどうしたらよいでしょうか?

これはアプリケーション全体のためのものではなく、パフォーマンスを考慮すると、この特定のエンティティである「カテゴリー」のみに必要なものでしょう。

どのように解決するのですか?

を使う代わりに Include メソッドを使う代わりに Load .

次に、for eachを実行して、すべての子プロセスをループし、その子プロセスをロードします。次に、for eachでその子達をループさせ、さらにその子達をループさせます。

下位レベルの数は、for eachループの数でハードコーディングされます。

以下は Load : http://msdn.microsoft.com/en-us/library/bb896249.aspx