Partager via


ChangeTracker Classe

Définition

Fournit l’accès aux informations et opérations de suivi des modifications pour les instances d’entité que le contexte suit. Les instances de cette classe sont généralement obtenues à partir de ChangeTracker et elle n’est pas conçue pour être construite directement dans votre code d’application.

public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager>
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IResettableService
type ChangeTracker = class
    interface IInfrastructure<IStateManager>
type ChangeTracker = class
    interface IInfrastructure<IStateManager>
    interface IResettableService
type ChangeTracker = class
    interface IResettableService
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager)
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager), IResettableService
Public Class ChangeTracker
Implements IResettableService
Héritage
ChangeTracker
Implémente
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Remarques

Pour plus d’informations et d’exemples, consultez Suivi des modifications EF Core .

Constructeurs

ChangeTracker(DbContext)

Cette API prend en charge l’infrastructure Entity Framework Core et n’est pas destinée à être utilisée directement à partir de votre code. Cette API pourra être changée ou supprimée dans les versions ultérieures.

ChangeTracker(DbContext, IStateManager, IChangeDetector, IModel, IEntityEntryGraphIterator)

Il s’agit d’une API interne qui prend en charge l’infrastructure Entity Framework Core et qui n’est pas soumise aux mêmes normes de compatibilité que les API publiques. Il peut être modifié ou supprimé sans préavis dans n’importe quelle version. Vous devez uniquement l’utiliser directement dans votre code avec une extrême prudence et en sachant que cela peut entraîner des échecs d’application lors de la mise à jour vers une nouvelle version d’Entity Framework Core.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

Cette API prend en charge l’infrastructure Entity Framework Core et n’est pas destinée à être utilisée directement à partir de votre code. Cette API pourra être changée ou supprimée dans les versions ultérieures.

Propriétés

AutoDetectChangesEnabled

Obtient ou définit une valeur indiquant si la méthode est appelée automatiquement par les DetectChanges() méthodes de DbContext et classes associées.

CascadeDeleteTiming

Obtient ou définit une valeur indiquant quand l’état d’une entité dépendante/enfant est défini sur Deleted une fois que son entité parente/principale a été marquée comme Deleted. La valeur par défaut estImmediate .

Context

Obtient le contexte auquel appartient ce suivi des modifications.

DebugView

Développez cette propriété dans le débogueur pour obtenir une vue lisible des entités suivies.

Avertissement : ne vous fiez pas au format des chaînes de débogage. Ils sont conçus uniquement pour le débogage et peuvent changer arbitrairement entre les versions.

Pour plus d’informations et d’exemples, consultez Suivi des modifications EF Core .

DeleteOrphansTiming

Obtient ou définit une valeur indiquant quand l’état d’une entité dépendante/enfant est défini Deleted sur une fois séparé d’une entité parente/principale par le biais d’une propriété de navigation ou de clé étrangère définie sur null. La valeur par défaut est Immediate.

LazyLoadingEnabled

Obtient ou définit une valeur indiquant si les propriétés de navigation des entités suivies seront chargées lors du premier accès.

QueryTrackingBehavior

Obtient ou définit le comportement de suivi des requêtes LINQ exécutées par rapport au contexte. La désactivation du suivi des modifications est utile pour les scénarios en lecture seule, car elle évite la surcharge liée à la configuration du suivi des modifications pour chaque entité instance. Vous ne devez pas désactiver le suivi des modifications si vous souhaitez manipuler des instances d’entité et conserver ces modifications dans la base de données à l’aide SaveChanges()de .

Méthodes

AcceptAllChanges()

Accepte toutes les modifications apportées aux entités dans le contexte. Il est supposé que les entités suivies représentent l’état actuel de la base de données. Cette méthode est généralement appelée par SaveChanges() après que les modifications ont été correctement enregistrées dans la base de données.

CascadeChanges()

Force la suppression en cascade immédiate des entités enfants/dépendantes lorsqu’elles sont soit supprimées d’une entité parent/principale requise, soit que l’entité parent/principal requise est elle-même supprimée. Consultez DeleteBehavior.

Clear()

Arrête le suivi de toutes les entités actuellement suivies.

DetectChanges()

Analyse les instances d’entité suivies pour détecter les modifications apportées aux données instance. DetectChanges() est généralement appelé automatiquement par le contexte lorsque des informations à jour sont requises (avant SaveChanges() et lors du retour des informations de suivi des modifications). En règle générale, vous devez uniquement appeler cette méthode si vous avez désactivé AutoDetectChangesEnabled.

Pour plus d’informations et d’exemples, consultez Suivi des modifications EF Core .

Entries()

Retourne un EntityEntry pour chaque entité suivie par le contexte. Les entrées permettent d’accéder aux informations et opérations de suivi des modifications pour chaque entité.

Entries<TEntity>()

Obtient un EntityEntry pour toutes les entités d’un type donné suivies par le contexte. Les entrées permettent d’accéder aux informations et opérations de suivi des modifications pour chaque entité.

HasChanges()

Vérifie si des entités nouvelles, supprimées ou modifiées font l’objet d’un suivi afin que ces modifications soient envoyées à la base de données si SaveChanges() ou SaveChangesAsync(CancellationToken) est appelée.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Commence le suivi d’une entité et de toutes les entités accessibles en parcourant ses propriétés de navigation. Traversal étant récursif, les propriétés de navigation de toutes les entités découvertes sont également analysées. Le spécifié callback est appelé pour chaque entité découverte et doit définir le State dans lequel chaque entité doit être suivie. Si aucun état n’est défini, l’entité reste sans suivi.

TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode,TState,Boolean>)

Commence le suivi d’une entité et de toutes les entités accessibles en parcourant ses propriétés de navigation. Traversal étant récursif, les propriétés de navigation de toutes les entités découvertes sont également analysées. Le spécifié callback est appelé pour chaque entité découverte et doit définir le State dans lequel chaque entité doit être suivie. Si aucun état n’est défini, l’entité reste sans suivi.

Cette méthode est conçue pour être utilisée dans des scénarios déconnectés où les entités sont récupérées à l’aide d’une instance du contexte, puis les modifications sont enregistrées à l’aide d’une autre instance du contexte. Par exemple, un service web où un appel de service récupère des entités de la base de données et un autre appel de service conserve toutes les modifications apportées aux entités. Chaque appel de service utilise une nouvelle instance du contexte qui est supprimé une fois l’appel terminé.

En règle générale, la traversée du graphique doit s’arrêter chaque fois qu’une entité déjà suivie est rencontrée ou lorsqu’une entité qui ne doit pas être suivie est atteinte. Pour ce comportement classique, utilisez la TrackGraph(Object, Action<EntityEntryGraphNode>) surcharge. Cette surcharge, en revanche, permet au rappel de décider quand le parcours prendra fin, mais il incombe ensuite à l’appelant de s’assurer que le parcours n’entrera pas dans une boucle infinie.

TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode<TState>,Boolean>)

Commence le suivi d’une entité et de toutes les entités accessibles en parcourant ses propriétés de navigation. Traversal étant récursif, les propriétés de navigation de toutes les entités découvertes sont également analysées. Le spécifié callback est appelé pour chaque entité découverte et doit définir le State dans lequel chaque entité doit être suivie. Si aucun état n’est défini, l’entité reste sans suivi.

Événements

DetectedAllChanges

Événement déclenché quand des modifications ont été détectées dans le graphique d’entité, soit via un appel explicite à DetectChanges(), soit automatiquement, par exemple dans le cadre de l’exécution SaveChanges() ou SaveChangesAsync(CancellationToken).

DetectedEntityChanges

Un événement s’est déclenché quand des modifications ont été détectées dans une seule entité, par le biais d’un appel explicite à DetectChanges() ou DetectChanges(), ou automatiquement, par exemple dans le cadre de l’exécution SaveChanges() ou SaveChangesAsync(CancellationToken).

DetectingAllChanges

Événement déclenché lors de la détection des modifications apportées au graphique d’entité sur le point de se produire, par le biais d’un appel explicite à DetectChanges(), ou automatiquement, par exemple dans le cadre de l’exécution SaveChanges() ou SaveChangesAsync(CancellationToken).

DetectingEntityChanges

Un événement déclenché lors de la détection de modifications apportées à une seule entité est sur le point de se produire, soit via un appel explicite à DetectChanges() ou DetectChanges(), soit automatiquement, comme une partie de l’exécution SaveChanges() ou SaveChangesAsync(CancellationToken).

StateChanged

Événement déclenché lorsqu’une entité suivie par l’associé DbContext a été déplacée de l’une à l’autre EntityState .

StateChanging

Événement déclenché lorsqu’une entité suivie par l’associé DbContext passe de l’une à l’autre EntityState .

Tracked

Événement déclenché lorsqu’une entité est suivie par le contexte, soit parce qu’elle a été retournée à partir d’une requête de suivi, soit parce qu’elle a été attachée ou ajoutée au contexte.

Tracking

Événement déclenché lorsqu’une entité est sur le point d’être suivie par le contexte, soit parce qu’elle est retournée à partir d’une requête de suivi, soit parce qu’elle est attachée ou ajoutée au contexte.

Implémentations d’interfaces explicites

IInfrastructure<IStateManager>.Instance
Obsolète..

Obtient le gestionnaire d’état interne utilisé pour stocker des informations sur les entités suivies.

Cette propriété est destinée à être utilisée par les méthodes d’extension. Il n’est pas destiné à être utilisé dans le code d’application.

IResettableService.ResetState()

Réinitialise le service afin qu’il puisse être utilisé à partir du pool.

IResettableService.ResetStateAsync(CancellationToken)

Fournit l’accès aux informations et opérations de suivi des modifications pour les instances d’entité que le contexte suit. Les instances de cette classe sont généralement obtenues à partir de ChangeTracker et elle n’est pas conçue pour être construite directement dans votre code d’application.

Méthodes d’extension

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Crée une représentation lisible des métadonnées données.

Avertissement : ne vous fiez pas au format de la chaîne retournée. Il est conçu pour le débogage uniquement et peut changer arbitrairement entre les versions.

GetInfrastructure<T>(IInfrastructure<T>)

Obtient la valeur d’une propriété masquée à l’aide IInfrastructure<T>de .

Cette méthode est généralement utilisée par les fournisseurs de base de données (et d’autres extensions). Il n’est généralement pas utilisé dans le code de l’application.

S’applique à