Condividi tramite


ChangeTracker Classe

Definizione

Fornisce l'accesso alle informazioni e alle operazioni di rilevamento delle modifiche per le istanze dell'entità in cui viene eseguito il rilevamento del contesto. Le istanze di questa classe vengono in genere ottenute da ChangeTracker e non sono progettate per essere costruite direttamente nel codice dell'applicazione.

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
Ereditarietà
ChangeTracker
Implementazioni
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Commenti

Per altre informazioni ed esempi, vedere Rilevamento delle modifiche di EF Core .

Costruttori

ChangeTracker(DbContext)

Questa API supporta l'infrastruttura Entity Framework Core e non deve essere usata direttamente dal codice. Questa API può cambiare o essere rimossa nelle versioni future.

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

Si tratta di un'API interna che supporta l'infrastruttura Entity Framework Core e non è soggetta agli stessi standard di compatibilità delle API pubbliche. Può essere modificato o rimosso senza preavviso in nessuna versione. È consigliabile usarlo direttamente nel codice con attenzione estrema e sapere che ciò può causare errori dell'applicazione durante l'aggiornamento a una nuova versione di Entity Framework Core.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

Questa API supporta l'infrastruttura Entity Framework Core e non deve essere usata direttamente dal codice. Questa API può cambiare o essere rimossa nelle versioni future.

Proprietà

AutoDetectChangesEnabled

Ottiene o imposta un valore che indica se il DetectChanges() metodo viene chiamato automaticamente da metodi di DbContext e classi correlate.

CascadeDeleteTiming

Ottiene o imposta un valore che indica quando un'entità dipendente/figlio avrà lo stato impostato su Deleted una volta che l'entità padre/entità principale è stata contrassegnata come Deleted. Il valore predefinito èImmediate.

Context

Ottiene il contesto a cui appartiene questo localizzatore di modifiche.

DebugView

Espandere questa proprietà nel debugger per una visualizzazione leggibile delle entità rilevate.

Avviso: non basarsi sul formato delle stringhe di debug. Sono progettati solo per il debug e possono cambiare arbitrariamente tra le versioni.

Per altre informazioni ed esempi, vedere Rilevamento delle modifiche di EF Core .

DeleteOrphansTiming

Ottiene o imposta un valore che indica quando un'entità dipendente/figlio avrà lo stato impostato su una volta grave da un'entità padre/entità principale tramite una proprietà di spostamento o chiave esterna impostata su Deleted Null. Il valore predefinito è Immediate.

LazyLoadingEnabled

Ottiene o imposta un valore che indica se le proprietà di spostamento per le entità rilevate verranno caricate per la prima volta.

QueryTrackingBehavior

Ottiene o imposta il comportamento di rilevamento per le query LINQ eseguite nel contesto. La disabilitazione del rilevamento delle modifiche è utile per scenari di sola lettura perché evita il sovraccarico della configurazione del rilevamento delle modifiche per ogni istanza di entità. Non è consigliabile disabilitare il rilevamento delle modifiche se si desidera modificare le istanze di entità e rendere persistenti tali modifiche al database usando SaveChanges().

Metodi

AcceptAllChanges()

Accetta tutte le modifiche apportate alle entità nel contesto. Si presuppone che le entità monitorate rappresentino lo stato corrente del database. Questo metodo viene in genere chiamato da SaveChanges() dopo che le modifiche sono state salvate correttamente nel database.

CascadeChanges()

Forza l'eliminazione immediata a catena delle entità figlio/dipendente quando vengono gravemente eliminate da un'entità padre/entità principale richiesta oppure l'entità padre/entità principale richiesta viene eliminata. Vedere DeleteBehavior.

Clear()

Arresta il rilevamento di tutte le entità attualmente monitorate.

DetectChanges()

Analizza le istanze di entità rilevate per rilevare le modifiche apportate ai dati dell'istanza. DetectChanges() viene in genere chiamato automaticamente dal contesto quando sono necessarie informazioni aggiornate (prima SaveChanges() e quando restituisce le informazioni di rilevamento delle modifiche). In genere è necessario chiamare questo metodo solo se è stato disabilitato AutoDetectChangesEnabled.

Per altre informazioni ed esempi, vedere Rilevamento delle modifiche di EF Core .

Entries()

Restituisce un oggetto EntityEntry per ogni entità monitorata dal contesto. Le voci forniscono l'accesso alle informazioni e alle operazioni di rilevamento delle modifiche per ogni entità.

Entries<TEntity>()

Ottiene un EntityEntry oggetto per tutte le entità di un determinato tipo monitorato dal contesto. Le voci forniscono l'accesso alle informazioni e alle operazioni di rilevamento delle modifiche per ogni entità.

HasChanges()

Verifica se vengono rilevate entità nuove, eliminate o modificate in modo che queste modifiche vengano inviate al database se SaveChanges() o SaveChangesAsync(CancellationToken) viene chiamato.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Inizia a tenere traccia di un'entità e di tutte le entità raggiungibili passando le proprietà di spostamento. L'attraversamento è ricorsivo, pertanto verranno analizzate anche le proprietà di spostamento di qualsiasi entità individuata. L'oggetto specificato callback viene chiamato per ogni entità individuata e deve impostare l'oggetto State in cui deve essere rilevata ogni entità. Se non viene impostato alcun stato, l'entità rimane non tracciata.

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

Inizia a tenere traccia di un'entità e di tutte le entità raggiungibili passando le proprietà di spostamento. L'attraversamento è ricorsivo, pertanto verranno analizzate anche le proprietà di spostamento di qualsiasi entità individuata. L'oggetto specificato callback viene chiamato per ogni entità individuata e deve impostare l'oggetto State in cui deve essere rilevata ogni entità. Se non viene impostato alcun stato, l'entità rimane non tracciata.

Questo metodo è progettato per l'uso in scenari disconnessi in cui le entità vengono recuperate usando un'istanza del contesto e quindi le modifiche vengono salvate usando un'istanza diversa del contesto. Un esempio di questo è un servizio Web in cui una chiamata di servizio recupera entità dal database e un'altra chiamata di servizio mantiene persistenti le modifiche apportate alle entità. Ogni chiamata al servizio usa una nuova istanza del contesto eliminata al termine della chiamata.

In genere l'attraversamento del grafico deve arrestarsi ogni volta che viene rilevata un'entità già tracciata o quando viene raggiunta un'entità che non deve essere tracciata. Per questo comportamento tipico, usare l'overload TrackGraph(Object, Action<EntityEntryGraphNode>) . Questo overload, d'altra parte, consente al callback di decidere quando l'attraversamento termina, ma l'ono è quindi sul chiamante per assicurarsi che l'attraversamento non entrare in un ciclo infinito.

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

Inizia a tenere traccia di un'entità e di tutte le entità raggiungibili passando le proprietà di spostamento. L'attraversamento è ricorsivo, pertanto verranno analizzate anche le proprietà di spostamento di qualsiasi entità individuata. L'oggetto specificato callback viene chiamato per ogni entità individuata e deve impostare l'oggetto State in cui deve essere rilevata ogni entità. Se non viene impostato alcun stato, l'entità rimane non tracciata.

Eventi

DetectedAllChanges

Evento generato quando sono state rilevate modifiche al grafico dell'entità, tramite una chiamata esplicita a DetectChanges()o automaticamente, ad esempio parte dell'esecuzione SaveChanges() o SaveChangesAsync(CancellationToken).

DetectedEntityChanges

Evento generato quando sono state rilevate modifiche a una singola entità, tramite una chiamata esplicita a DetectChanges() o o automaticamente, ad esempio parte dell'esecuzione SaveChanges() o DetectChanges()SaveChangesAsync(CancellationToken).

DetectingAllChanges

Evento generato durante il rilevamento delle modifiche apportate al grafico delle entità, tramite una chiamata esplicita a DetectChanges()o automaticamente, ad esempio parte dell'esecuzione SaveChanges() o SaveChangesAsync(CancellationToken).

DetectingEntityChanges

Un evento generato durante il rilevamento delle modifiche a una singola entità sta per verificarsi, tramite una chiamata esplicita a DetectChanges() o o o automaticamente, ad esempio parte dell'esecuzione SaveChanges() o DetectChanges()SaveChangesAsync(CancellationToken).

StateChanged

Evento generato quando un'entità rilevata dall'oggetto associato DbContext è stata spostata da una EntityState all'altra.

StateChanging

Evento generato quando un'entità rilevata dall'oggetto associato DbContext passa da una EntityState all'altra.

Tracked

Evento generato quando un'entità viene rilevata dal contesto, perché è stata restituita da una query di rilevamento o perché è stata associata o aggiunta al contesto.

Tracking

Evento generato quando un'entità sta per essere tracciata dal contesto, perché viene restituita da una query di rilevamento o perché viene associata o aggiunta al contesto.

Implementazioni dell'interfaccia esplicita

IInfrastructure<IStateManager>.Instance
Obsoleta..

Ottiene la gestione stato interna usata per archiviare informazioni sulle entità rilevate.

Questa proprietà è destinata all'uso da parte dei metodi di estensione. Non è destinato a essere usato nel codice dell'applicazione.

IResettableService.ResetState()

Reimposta il servizio in modo che possa essere usato dal pool.

IResettableService.ResetStateAsync(CancellationToken)

Fornisce l'accesso alle informazioni e alle operazioni di rilevamento delle modifiche per le istanze dell'entità in cui viene eseguito il rilevamento del contesto. Le istanze di questa classe vengono in genere ottenute da ChangeTracker e non sono progettate per essere costruite direttamente nel codice dell'applicazione.

Metodi di estensione

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Crea una rappresentazione leggibile dei metadati specificati.

Avviso: non basarsi sul formato della stringa restituita. È progettato solo per il debug e può cambiare arbitrariamente tra le versioni.

GetInfrastructure<T>(IInfrastructure<T>)

Ottiene il valore da una proprietà nascosta usando IInfrastructure<T>.

Questo metodo viene in genere usato dai provider di database (e altre estensioni). In genere non viene usato nel codice dell'applicazione.

Si applica a