ChangeTracker Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
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 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 |
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. |