1

私は EF5 Code First を使用しており、次のようなクエリがあります。

        var query = DbSet.Include(ent => ent.Websites)
            .Include(ent => ent.Addresses)
            .Include(ent => ent.IndustryType)
            .Include(ent => ent.Factors)
            .Include(ent => ent.Factors.Select(fact => fact.Objectives))
            .Include(ent => ent.DmpNodes)
            .Include(ent => ent.DmpNodes.Select(node => node.DmpNodeConnections));

4 つ以上のインクルードを使用すると、クエリの実行が非常に遅くなります。その理由はすでにわかっています。

たとえば、DmpNodes に含まれるナビゲーション プロパティを遅延読み込みで読み込むこともできますが、その結果、何百ものクエリが発生します。

このクエリを分割して、最初に Addresses、IndustryType、Factors などのエンティティをロードできるようにする方法を探しています。そして、2 番目のクエリで、これらのエンティティを残りで埋めます。

これは可能ですか、それとも別の良い解決策がありますか?

4

1 に答える 1

2

同じコンテキストを使用する別の L2E クエリを実行すると、EF はメモリ内の関連エンティティを自動的に結合します。

あなたの側でテストを書くだけです。選択WebsitesAddressesてから、同じコンテキストを使用して別のクエリを実行すると、ナビゲーション プロパティが正しく入力されます。

于 2013-07-10T13:39:50.663 に答える