Maison >développement back-end >C++ >Comment .AsNoTracking() affecte-t-il les mises à jour d'entités lors de l'utilisation de différentes instances de contexte ?

Comment .AsNoTracking() affecte-t-il les mises à jour d'entités lors de l'utilisation de différentes instances de contexte ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-09 13:06:41764parcourir

How Does .AsNoTracking() Affect Entity Updates When Using Different Context Instances?

.AsNoTracking() d'Entity Framework Core : performances par rapport au suivi

Entity Framework Core (EF Core) propose .AsNoTracking() d'améliorer les performances en évitant le suivi des modifications pour les entités récupérées. Cet article examine comment l'utilisation de .AsNoTracking() affecte la mise à jour des entités lorsque différentes instances de contexte sont impliquées.

Comprendre le suivi des modifications dans EF Core

EF Core suit généralement les entités extraites de la base de données, surveillant les modifications pour des mises à jour efficaces. .AsNoTracking() désactive cette fonctionnalité, améliorant ainsi les performances lorsque des modifications ne sont pas anticipées.

Scénario : Récupération et mise à jour avec des contextes séparés

Notre scénario implique la récupération d'une entité (par exemple, un utilisateur) à l'aide de .AsNoTracking() et sa mise à jour ultérieure à l'aide d'un contexte EF Core différent.

L'effet de .AsNoTracking()

Lorsque .AsNoTracking() est utilisé, l'entité récupérée se détache du contexte. Tenter de mettre à jour cette entité avec un nouveau contexte ne déclenchera pas automatiquement une mise à jour ; le contexte ne le reconnaîtra pas comme un enregistrement existant. Vous devez attacher manuellement l'entité modifiée au nouveau contexte et définir explicitement son état sur EntityState.Modified pour indiquer qu'une mise à jour est nécessaire.

Omettre .AsNoTracking()

À l’inverse, si .AsNoTracking() est omis, EF Core suit l’entité récupérée. La mise à jour de cette entité avec un contexte différent sera automatiquement gérée par EF Core, éliminant ainsi le besoin de pièce jointe manuelle et de définition d'état.

Choisir la bonne approche

L'utilisation de .AsNoTracking() améliore les performances si vous êtes certain que l'entité ne sera pas modifiée. Toutefois, si des mises à jour sont attendues, l’omission de .AsNoTracking() simplifie le processus de mise à jour, car EF Core gère automatiquement le suivi. Le choix dépend de vos besoins spécifiques et de la question de savoir si les gains de performances l'emportent sur la complexité supplémentaire de la gestion manuelle des mises à jour.

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