ホームページ >バックエンド開発 >C++ >関連エンティティをEFクエリにWHERE句を持つ効率的に含めるにはどうすればよいですか?

関連エンティティをEFクエリにWHERE句を持つ効率的に含めるにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-02-01 13:51:10935ブラウズ

How Can I Efficiently Include Related Entities with a Where Clause in an EF Query?

efクエリの最適化:

を含む関連エンティティをフィルタリングします この記事では、エンティティフレームワーク(EF)クエリ内の

句を使用して、関連するエンティティを効率的に取得するという課題に対処します。 目標は、複数のデータベース旅行を回避することです シナリオには、Where

の2つのエンティティが含まれ、

のコレクションナビゲーションプロパティがあります。目的は、運転しているすべてのバスを回収することと、目を覚ましている乗客のみと一緒に Bus一般的な非効率的なアプローチは、複数のデータベース呼び出しをもたらします。 より効率的なソリューションでは、怠zyなロードを無効にし、クエリ内のフィルタリングされたPerson句を使用して関連するエンティティを明示的にロードすることを伴います。 Busこのアプローチを示す例は次のとおりです Person

このコードは、最初に運転バスとその目覚めの乗客を単一のデータベースクエリで取得します。

呼び出しは、メモリの結果を実現し、EFが関係を正しく確立できるようにします。 最後に、Whereオブジェクトのみが選択されて返されます

重要な考慮事項:

<code class="language-csharp">Context.Configuration.LazyLoadingEnabled = false;
var buses = Context.Busses.Where(b => b.IsDriving)
            .Select(b => new
            {
                Bus = b,
                AwakePassengers = b.Passengers.Where(p => p.Awake)
            })
            .AsEnumerable()
            .Select(x => x.Bus)
            .ToList();</code>

この方法は、EF6で効果的ですが、多くの関係とEFコアで調整が必要になる場合があります。 EF Coreは、より複雑なシナリオに代替ソリューションを提供できるグローバルクエリフィルターなどの機能を提供します。 これらの高度な手法と多くの関係と多くの関係の処理の詳細については、元のソースを参照してください。

以上が関連エンティティをEFクエリにWHERE句を持つ効率的に含めるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。