La méthode de
Entity Framework peut pré-télécharger efficacement les entités pertinentes, mais peut-elle gérer les attributs imbriqués multi-niveaux (tels que les ensembles imbriqués contenant des objets complexes)?
Include()
Implémentation et restrictions existantes
Exemple de code affiche Les méthodes peuvent charger des attributs de premier niveau. La requête suivante:
L'objet Include()
contenant l'attribut
<code class="language-csharp">public IEnumerable<applicationserver> GetAll() { return this.Database.ApplicationServers .Include(x => x.ApplicationsWithOverrideGroup) .Include(x => x.ApplicationWithGroupToForceInstallList) .Include(x => x.CustomVariableGroups) .ToList(); }</code>
et ApplicationsWithOverrideGroup
dans l'ensemble ne seront pas remplis. ApplicationServer
ApplicationWithOverrideVariableGroup
Nested multi-niveaux Inclure la solution ApplicationWithOverrideVariableGroup
Application
CustomVariableGroup
Selon la version du cadre d'entité utilisé, vous pouvez utiliser les méthodes suivantes pour pré-télécharger les attributs multi-niveaux:
accepte l'expression de Lambda. En utilisant des expressions Lambda imbriquées, vous pouvez spécifier des niveaux multi-niveaux incluent:
Entity Framework Core a introduit la méthode Include()
, permettant au niveau d'inclure. Cette méthode est utilisée après le initial pour spécifier le niveau plus profond:
<code class="language-csharp">var query = this.Database.ApplicationServers .Include(x => x.ApplicationsWithOverrideGroup .Select(y => y.Application)) .Include(x => x.ApplicationsWithOverrideGroup .Select(y => y.CustomVariableGroup));</code>
Grâce à ces méthodes, les attributs multi-niveaux de l'entité Framework peuvent être chargés pour garantir que l'ensemble d'objets complexes est entièrement rempli pendant la récupération.
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!