Maison >développement back-end >C++ >Comment puis-je filtrer les propriétés de navigation incluses dans l'entité Core Framework?
Challenge: Filtrage d'une requête principale basée sur une propriété dans une propriété de navigation imbriquée lors de l'utilisation de Include
dans l'entité Le noyau du cadre peut être délicat. Ce guide fournit une solution.
Solution: levier filtré comprend
Framework Entity Core 5 introduit Filtorté Inclut , une fonctionnalité puissante permettant le filtrage des propriétés de navigation incluses. Les opérateurs pris en charge incluent Where
, OrderBy
/ OrderByDescending
, Skip
et Take
.
L'implémentation filtrée comprend:
illustrons avec un exemple:
<code class="language-csharp">var blogs = context.Blogs .Include(blog => blog.Posts.Where(post => post.Author == "me")) .ThenInclude(post => post.Author) .ToList();</code>
Cette requête récupère les blogs et leurs articles associés, mais ne comprend que des articles où le nom de l'auteur est "moi". Notez la clause Where
dans la méthode Include
.
Considérations clés:
Include
sont traités comme des prédicats indépendants. La fixation de la relation et le filtré incluent:
Soyez conscient de la fixation des relations. Il pourrait ajouter des entrées supplémentaires à la collection de la propriété de navigation, conduisant potentiellement à des résultats inattendus.
Filtorté Inclut par rapport au filtrage de requête directe:
Filtered Include
Impact uniquement les propriétés de navigation incluses, pas la requête principale. Pour filtrer la requête principale en fonction d'une propriété de navigation, utilisez la méthode Where
directement sur le DbSet
ou IQueryable
.
Inclut et projections filtrées:
Les projections ignorent généralement les instructions Include
, même filtrées. Cependant, si le Include
peut être appliqué à une entité au sein de la projection, elle sera toujours appliquée.
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!