Maîtriser la récupération de propriétés imbriquées dans Entity Framework
La méthodeEntity Framework Include()
simplifie le chargement rapide des entités associées. Cependant, la récupération de propriétés profondément imbriquées nécessite une approche plus sophistiquée.
Le défi : l'hydratation partielle des objets
Considérez ce scénario : vous récupérez ApplicationServers
et avez besoin de la propriété ApplicationsWithOverrideGroup
entièrement renseignée, y compris ses propriétés Application
et CustomVariableGroup
imbriquées. Un simple Include()
appel pourrait échouer :
<code class="language-csharp">public IEnumerable<applicationserver> GetAll() { return this.Database.ApplicationServers .Include(x => x.ApplicationsWithOverrideGroup) ... .ToList(); }</applicationserver></code>
Cela charge uniquement la propriété Enabled
de ApplicationWithOverrideVariableGroup
, laissant Application
et CustomVariableGroup
vides.
La solution : un chargement imbriqué efficace
Pour résoudre ce problème, exploitez les appels Include()
imbriqués (EF6) ou la méthode ThenInclude()
(EF Core) :
Cadre d'entité 6 :
Utilisez la méthode Select()
avec des expressions lambda pour l'inclusion de propriétés imbriquées :
<code class="language-csharp">query.Include(x => x.Collection.Select(y => y.Property))</code>
Noyau du framework d'entité :
Utilisez la méthode ThenInclude()
pour une solution plus propre et plus lisible :
<code class="language-csharp">query.Include(x => x.Collection) .ThenInclude(x => x.Property);</code>
Ces techniques assurent une hydratation complète des objets, fournissant toutes les données imbriquées nécessaires au sein de vos entités récupérées. Cela élimine le besoin de requêtes ultérieures dans la base de données, optimisant ainsi les performances et la récupération des données.
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!