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 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 |
| 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 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 |
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. |