Maison > développement back-end > C++ > EF Core: Comment gérer les relations nuls lors de l'accès à des entités liées?

EF Core: Comment gérer les relations nuls lors de l'accès à des entités liées?

Barbara Streisand
Libérer: 2025-01-24 22:26:10
original
598 Les gens l'ont consulté

EF Core: How to Handle Null Relations When Accessing Related Entities?

EF Core: Éviter les exceptions de référence nulles avec des entités associées

L'accès directement à des entités associées dans l'entité Framework Core (EF Core) Les requêtes peuvent conduire à des erreurs NullReferenceException si la relation n'est pas correctement chargée. Cela se produit souvent lorsque vous essayez d'accéder aux propriétés de navigation avant que EF Core n'ait récupéré les données connexes.

Par exemple, si une entité Mutant a une propriété OriginalCode de navigation, accéder à mutant.OriginalCode peut retourner null à moins que vous ayez explicitement chargé l'entité OriginalCode connexe. EF Core, par défaut, n'effectue pas de chargement paresseux.

La solution: chargement avide

L'approche la plus simple est le chargement impatient. Cela précharge les données liées au cours de la requête initiale, empêchant les valeurs nulles. Dans notre exemple:

<code class="language-csharp">var mutants = db.Mutants.Include(m => m.OriginalCode).ToList();</code>
Copier après la connexion

Cela garantit que m.OriginalCode est rempli pour chaque Mutant dans la liste mutants.

Contrôler le chargement des données

Parfois, vous voudrez peut-être éviter de charger automatiquement les entités liées, en particulier lorsque vous traitez avec de grands ensembles de données ou des problèmes de performance. Deux options sont disponibles:

  1. DBContext séparé: Utilisez une instance séparée DbContext uniquement pour la requête pour éviter les effets secondaires potentiels des autres parties de votre application.

  2. pas de requêtes de suivi: Utiliser AsNoTracking() pour empêcher EF Core de suivre les entités, améliorer les performances:

<code class="language-csharp">var mutants = db.Mutants.AsNoTracking().ToList();</code>
Copier après la connexion

Chargement paresseux (EF Core 2.1 et ultérieurement)

EF Core 2.1 et les versions ultérieures prennent en charge le chargement paresseux. Pour l'activer:

  • Propriétés virtuelles: Déclarer toutes les propriétés de navigation comme virtual.
  • Package des proxies: Installez le package Microsoft.EntityFrameworkCore.Proxies Nuget.
  • Activer les proxies: Appelez UseLazyLoadingProxies() lors de la configuration de votre DbContext.

EF Core propose également une approche de chargement paresseuse sans proxy; Consultez la documentation officielle pour plus de détails. N'oubliez pas que le chargement paresseux peut avoir un impact sur les performances, alors utilisez-le judicieusement.

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