Maison > développement back-end > C++ > Comment puis-je inclure efficacement des entités connexes avec une clause Where dans une requête EF?

Comment puis-je inclure efficacement des entités connexes avec une clause Where dans une requête EF?

Linda Hamilton
Libérer: 2025-02-01 13:51:10
original
871 Les gens l'ont consulté

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

Optimisation des requêtes EF: filtrage des entités liées avec include

Cet article relève le défi de récupérer efficacement les entités connexes avec une clause Where dans une requête entièrement framework (EF). L'objectif est d'éviter plusieurs voyages de base de données.

Le scénario implique deux entités: Bus et Person, avec Bus ayant une propriété de navigation de collection pour Person. L'objectif est de récupérer tous les bus qui conduisent, ainsi que uniquement les passagers qui sont éveillés.

Une approche inefficace commune entraîne plusieurs appels de base de données. Une solution plus efficace consiste à désactiver le chargement paresseux et à charger explicitement les entités liées avec une clause filtrée Where dans la requête.

Voici un exemple démontrant cette approche:

<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>
Copier après la connexion

Ce code récupère d'abord les bus de conduite et leurs passagers éveillés dans une seule requête de base de données. L'appel AsEnumerable() matérialise les résultats dans la mémoire, permettant à EF d'établir correctement les relations. Enfin, seuls les objets Bus sont sélectionnés et retournés.

Considérations importantes:

Cette méthode, bien que efficace dans EF6, pourrait nécessiter des ajustements pour les relations multiples-à-plusieurs et dans le noyau EF. EF Core propose des fonctionnalités telles que les filtres de requête globales qui peuvent fournir des solutions alternatives pour des scénarios plus complexes. Pour des informations détaillées sur ces techniques avancées et en manipulant des relations de plusieurs à plusieurs, veuillez vous référer à la source d'origine.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal