Lingua

ChangeTracker Classe

Definizione

Fornisce l'accesso alle informazioni e alle operazioni di rilevamento delle modifiche per le istanze di entità che il contesto sta monitorando. 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>
[System.Runtime.CompilerServices.Nullable(0)]
public class ChangeTracker : Microsoft.EntityFrameworkCore.Infrastructure.IResettableService
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>
[<System.Runtime.CompilerServices.Nullable(0)>]
type ChangeTracker = class
    interface IResettableService
type ChangeTracker = class
    interface IInfrastructure<IStateManager>
    interface IResettableService
type ChangeTracker = class
    interface IResettableService
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager)
Public Class ChangeTracker
Implements IResettableService
Public Class ChangeTracker
Implements IInfrastructure(Of IStateManager), IResettableService
Ereditarietà
ChangeTracker
Attributi
Implementazioni
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Commenti

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

Costruttori

Nome Descrizione
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 alcuna versione. È consigliabile usarlo direttamente nel codice con estrema cautela e sapere che questa operazione può causare errori dell'applicazione durante l'aggiornamento a una nuova versione Entity Framework Core.

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(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à

Nome Descrizione
AutoDetectChangesEnabled

Ottiene o imposta un valore che indica se il DetectChanges() metodo viene chiamato automaticamente dai metodi di DbContext e dalle 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/principale è stata contrassegnata come Deleted. Il valore predefinito èImmediate .

Context

Ottiene il contesto a cui appartiene questo strumento di rilevamento 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 modifiche di EF Core .

DeleteOrphansTiming

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

LazyLoadingEnabled

Ottiene o imposta un valore che indica se le proprietà di navigazione per le entità rilevate verranno caricate al primo accesso.

QueryTrackingBehavior

Ottiene o imposta il comportamento di rilevamento per le query LINQ eseguite sul contesto. La disabilitazione del rilevamento delle modifiche è utile per gli scenari di sola lettura perché evita il sovraccarico di 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

Nome Descrizione
AcceptAllChanges()

Accetta tutte le modifiche apportate alle entità nel contesto. Si presuppone che le entità rilevate 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 di entità figlio/dipendente quando vengono eliminate da un'entità padre/principale richiesta oppure l'entità padre/principale richiesta viene eliminata. Vedete DeleteBehavior.

Clear()

Arresta il rilevamento di tutte le entità attualmente rilevate.

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 è necessario up-to-date (prima SaveChanges() e quando vengono restituite informazioni sul rilevamento delle modifiche). In genere è necessario chiamare questo metodo solo se è stato disabilitato AutoDetectChangesEnabled.

Entries()

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

Entries<TEntity>()

Ottiene un oggetto EntityEntry 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à.

GetEntriesForState(Boolean, Boolean, Boolean, Boolean)

Ottiene un oggetto EntityEntry per ogni entità rilevata dal contesto con gli stati specificati. Le voci forniscono l'accesso alle informazioni e alle operazioni di rilevamento delle modifiche per ogni entità.

GetEntriesForState<TEntity>(Boolean, Boolean, Boolean, Boolean)

Ottiene un oggetto EntityEntry<TEntity> per ogni entità di un determinato tipo monitorato dal contesto con gli stati specificati. Le voci forniscono l'accesso alle informazioni e alle operazioni di rilevamento delle modifiche per ogni entità.

HasChanges()

Controlla 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 attraversando le relative proprietà di navigazione. L'attraversamento è ricorsivo, quindi verranno analizzate anche le proprietà di navigazione 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 è impostato alcuno stato, l'entità rimane non rilevata.

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

Inizia a tenere traccia di un'entità e di tutte le entità raggiungibili attraversando le relative proprietà di navigazione. L'attraversamento è ricorsivo, quindi verranno analizzate anche le proprietà di navigazione 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 è impostato alcuno stato, l'entità rimane non rilevata.

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 è un servizio Web in cui una chiamata al servizio recupera le entità dal database e un'altra chiamata al servizio rende persistenti le modifiche apportate alle entità. Ogni chiamata al servizio usa una nuova istanza del contesto eliminato al termine della chiamata.

In genere l'attraversamento del grafico deve essere arrestato ogni volta che viene rilevata un'entità già rilevata o quando viene raggiunta un'entità che non deve essere rilevata. Per questo comportamento tipico, usare l'overload TrackGraph(Object, Action<EntityEntryGraphNode>) . Questo overload, d'altra parte, consente al callback di decidere quando l'attraversamento terminerà, ma l'onus è quindi sul chiamante per garantire che l'attraversamento non entrerà 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 attraversando le relative proprietà di navigazione. L'attraversamento è ricorsivo, quindi verranno analizzate anche le proprietà di navigazione 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 è impostato alcuno stato, l'entità rimane non rilevata.

Eventi

Nome Descrizione
DetectedAllChanges

Evento generato quando sono state rilevate modifiche al grafo di 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 DetectChanges()oppure automaticamente, ad esempio parte dell'esecuzione SaveChanges() o SaveChangesAsync(CancellationToken).

DetectingAllChanges

Evento generato quando si rilevano le modifiche apportate al grafico di entità che sta per verificarsi, tramite una chiamata esplicita a DetectChanges()o automaticamente, ad esempio parte dell'esecuzione SaveChanges() o SaveChangesAsync(CancellationToken).

DetectingEntityChanges

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

StateChanged

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

StateChanging

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

Tracked

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

Tracking

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

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IInfrastructure<IStateManager>.Instance
Obsoleti.

Ottiene il gestore di stato interno utilizzato per archiviare informazioni sulle entità rilevate.

Questa proprietà è destinata all'uso da parte dei metodi di estensione. Non è progettato per 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 di entità che il contesto sta monitorando. 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

Nome Descrizione
GetInfrastructure<T>(IInfrastructure<T>)

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

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

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.

Si applica a