Maison >développement back-end >C++ >Comment puis-je filtrer les propriétés de navigation incluses dans l'entité Core Framework?

Comment puis-je filtrer les propriétés de navigation incluses dans l'entité Core Framework?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-31 02:51:08730parcourir

How Can I Filter Included Navigation Properties in Entity Framework Core?

Filtrage des propriétés de navigation incluses dans EF Core: Un guide complet

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:

  • Filtre unique par navigation: Un seul filtre est autorisé par propriété de navigation.
  • Les prédicats indépendants: Les filtres à l'intérieur Include sont traités comme des prédicats indépendants.
  • La mise au point de chargement paresseux: Les incluses filtrées sont appliquées quelle que soit la configuration de chargement paresseuse.
  • Résultats cumulatifs: Le filtré suivant comprend l'accumulation de leurs résultats.

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!

Déclaration:
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