エンティティフレームワークでバスを効率的に回収し、乗客を覚醒させる
この記事では、エンティティフレームワーク(EF)を使用してバスとその目覚めの乗客を効率的な方法で取得するという課題に対処し、データベース呼び出しを最小限に抑えます。 ソリューションは、EFバージョンによってわずかに変化します
5より前のコアバージョン:
古いEFバージョンでは、目的の結果を達成するために回避策が必要です。
Context.Configuration.LazyLoadingEnabled = false;
プロジェクションクエリ:
<code class="language-csharp">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>をメモリ内のそれぞれのバスに自動的に接続します。
Automapperを使用したマッピング(オプション):AutomApper(または同様のライブラリ)を使用して、取得したデータをDTOにマッピングします。
AwakePassengers
怠zyなロードを無効にすると、アプリケーションの他の部分に影響します。 トレードオフを検討してください
efコア5以降:
以上がエンティティフレームワークでバスとその目覚めの乗客を効率的に回収するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。