Sprache

ChangeTracker Klasse

Definition

Bietet Zugriff auf Änderungsnachverfolgungsinformationen und -vorgänge für Entitätsinstanzen, die der Kontext nachverfolgt. Instanzen dieser Klasse werden in der Regel abgerufen ChangeTracker und sind nicht so konzipiert, dass sie direkt in Ihrem Anwendungscode erstellt werden.

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
Vererbung
ChangeTracker
Attribute
Implementiert
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Hinweise

Weitere Informationen und Beispiele finden Sie unter EF Core-Änderungsnachverfolgung .

Konstruktoren

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

Dies ist eine interne API, die die Entity Framework Core-Infrastruktur unterstützt und nicht den gleichen Kompatibilitätsstandards wie öffentliche APIs unterliegt. Sie kann ohne Vorherige Ankündigung geändert oder entfernt werden. Sie sollten sie nur direkt in Ihrem Code mit äußerster Vorsicht verwenden und wissen, dass dies zu Anwendungsfehlern bei der Aktualisierung auf eine neue Entity Framework Core-Version führen kann.

ChangeTracker(DbContext)

Diese API unterstützt die Entity Framework Core-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. Diese API kann in zukünftigen Versionen geändert oder entfernt werden.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

Diese API unterstützt die Entity Framework Core-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. Diese API kann in zukünftigen Versionen geändert oder entfernt werden.

Eigenschaften

Name Beschreibung
AutoDetectChangesEnabled

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob die DetectChanges() Methode automatisch von Methoden und DbContext verwandten Klassen aufgerufen wird.

CascadeDeleteTiming

Dient zum Abrufen oder Festlegen eines Werts, der angibt, wann eine abhängige/untergeordnete Entität ihren Status auf den Wert festgelegt Deleted hat, nachdem die übergeordnete/Prinzipalentität als Deletedmarkiert wurde. Der Standardwert istImmediate.

Context

Ruft den Kontext ab, zu dem diese Änderungsverfolgung gehört.

DebugView

Erweitern Sie diese Eigenschaft im Debugger für eine lesbare Ansicht der Entitäten, die nachverfolgt werden sollen.

Warnung: Verlassen Sie sich nicht auf das Format der Debugzeichenfolgen. Sie sind nur für das Debuggen konzipiert und können sich willkürlich zwischen Versionen ändern.

Weitere Informationen und Beispiele finden Sie unter EF Core-Änderungsnachverfolgung .

DeleteOrphansTiming

Dient zum Abrufen oder Festlegen eines Werts, der angibt, wann eine abhängige/untergeordnete Entität ihren Zustand auf einmal von einer übergeordneten/Prinzipalentität durch eine Navigations- oder Fremdschlüsseleigenschaft festgelegt Deleted hat, die auf NULL festgelegt wird. Der Standardwert ist Immediate.

LazyLoadingEnabled

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob Navigationseigenschaften für nachverfolgte Entitäten beim ersten Zugriff geladen werden.

QueryTrackingBehavior

Dient zum Abrufen oder Festlegen des Nachverfolgungsverhaltens für LINQ-Abfragen, die für den Kontext ausgeführt werden. Das Deaktivieren der Änderungsnachverfolgung ist für schreibgeschützte Szenarien nützlich, da dadurch der Aufwand beim Einrichten der Änderungsnachverfolgung für jede Entitätsinstanz vermieden wird. Sie sollten die Änderungsnachverfolgung nicht deaktivieren, wenn Sie Entitätsinstanzen bearbeiten und diese Änderungen mithilfe SaveChanges()der Datenbank beibehalten möchten.

Methoden

Name Beschreibung
AcceptAllChanges()

Akzeptiert alle Änderungen, die an Entitäten im Kontext vorgenommen wurden. Es wird davon ausgegangen, dass die nachverfolgten Entitäten den aktuellen Status der Datenbank darstellen. Diese Methode wird in der Regel aufgerufen, SaveChanges() nachdem Änderungen erfolgreich in der Datenbank gespeichert wurden.

CascadeChanges()

Erzwingt das sofortige Kaskadieren von untergeordneten/abhängigen Entitäten, wenn sie entweder von einer erforderlichen übergeordneten/prinzipalen Entität getrennt werden, oder die erforderliche übergeordnete/Prinzipalentität wird selbst gelöscht. Siehe DeleteBehavior.

Clear()

Beendet die Nachverfolgung aller aktuell nachverfolgten Entitäten.

DetectChanges()

Überprüft die nachverfolgten Entitätsinstanzen, um änderungen zu erkennen, die an den Instanzdaten vorgenommen wurden. DetectChanges() wird in der Regel automatisch vom Kontext aufgerufen, wenn up-to-datumsinformationen erforderlich sind (vor SaveChanges() und beim Zurückgeben von Änderungsnachverfolgungsinformationen). Normalerweise müssen Sie diese Methode nur aufrufen, wenn Sie deaktiviert AutoDetectChangesEnabledsind.

Entries()

Gibt eine EntityEntry für jede Entität zurück, die vom Kontext nachverfolgt wird. Die Einträge bieten Zugriff auf Änderungsnachverfolgungsinformationen und -vorgänge für jede Entität.

Entries<TEntity>()

Ruft eine EntityEntry für alle Entitäten eines bestimmten Typs ab, die vom Kontext nachverfolgt werden. Die Einträge bieten Zugriff auf Änderungsnachverfolgungsinformationen und -vorgänge für jede Entität.

GetEntriesForState(Boolean, Boolean, Boolean, Boolean)

Ruft eine EntityEntry für jede Entität, die vom Kontext nachverfolgt wird, der den angegebenen Zustand(n) hat. Die Einträge bieten Zugriff auf Änderungsnachverfolgungsinformationen und -vorgänge für jede Entität.

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

Ruft eine EntityEntry<TEntity> für jede Entität eines bestimmten Typs ab, die vom Kontext nachverfolgt wird, der den angegebenen Zustand(n) aufweist. Die Einträge bieten Zugriff auf Änderungsnachverfolgungsinformationen und -vorgänge für jede Entität.

HasChanges()

Überprüft, ob neue, gelöschte oder geänderte Entitäten nachverfolgt werden, sodass diese Änderungen an die Datenbank gesendet werden, wenn SaveChanges() oder SaveChangesAsync(CancellationToken) aufgerufen wird.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Beginnt mit der Nachverfolgung einer Entität und aller Entitäten, die erreichbar sind, indem die Navigationseigenschaften durchlaufen werden. Traversal ist rekursiv, sodass auch die Navigationseigenschaften aller ermittelten Entitäten gescannt werden. Der angegebene callback Wert wird für jede ermittelte Entität aufgerufen und muss die Entität festlegen, in der State jede Entität nachverfolgt werden soll. Wenn kein Status festgelegt ist, bleibt die Entität nicht nachverfolgt.

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

Beginnt mit dem Nachverfolgen einer Entität und aller Entitäten, die erreichbar sind, indem die Navigationseigenschaften durchlaufen werden. Traversal ist rekursiv, sodass auch die Navigationseigenschaften aller ermittelten Entitäten gescannt werden. Der angegebene callback Wert wird für jede ermittelte Entität aufgerufen und muss die Entität festlegen, in der State jede Entität nachverfolgt werden soll. Wenn kein Status festgelegt ist, bleibt die Entität nicht nachverfolgt.

Diese Methode ist für die Verwendung in getrennten Szenarien vorgesehen, in denen Entitäten mithilfe einer Instanz des Kontexts abgerufen werden und dann Änderungen mithilfe einer anderen Instanz des Kontexts gespeichert werden. Ein Beispiel hierfür ist ein Webdienst, bei dem ein Dienstaufruf Entitäten aus der Datenbank abruft und ein anderer Dienstaufruf alle Änderungen an den Entitäten speichert. Jeder Dienstaufruf verwendet eine neue Instanz des Kontexts, der verworfen wird, wenn der Aufruf abgeschlossen ist.

Normalerweise sollte das Durchlaufen des Diagramms beendet werden, wenn eine bereits nachverfolgte Entität gefunden wird oder wenn eine Entität erreicht wird, die nicht nachverfolgt werden soll. Verwenden Sie für dieses typische Verhalten die TrackGraph(Object, Action<EntityEntryGraphNode>) Überladung. Diese Überladung ermöglicht andererseits dem Rückruf zu entscheiden, wann die Durchquerung beendet wird, aber der Onus befindet sich dann auf dem Aufrufer, um sicherzustellen, dass die Durchquerung keine endlose Schleife eingibt.

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

Beginnt mit der Nachverfolgung einer Entität und aller Entitäten, die erreichbar sind, indem die Navigationseigenschaften durchlaufen werden. Traversal ist rekursiv, sodass auch die Navigationseigenschaften aller ermittelten Entitäten gescannt werden. Der angegebene callback Wert wird für jede ermittelte Entität aufgerufen und muss die Entität festlegen, in der State jede Entität nachverfolgt werden soll. Wenn kein Status festgelegt ist, bleibt die Entität nicht nachverfolgt.

Events

Name Beschreibung
DetectedAllChanges

Ein Ereignis wird ausgelöst, wenn Änderungen an dem Entitätsdiagramm erkannt wurden, entweder über einen expliziten Aufruf DetectChanges()oder automatisch, z. B. teil der Ausführung SaveChanges() oder SaveChangesAsync(CancellationToken).

DetectedEntityChanges

Ein Ereignis wird ausgelöst, wenn Änderungen an einer einzelnen Entität erkannt wurden, entweder über einen expliziten Aufruf DetectChanges() oder DetectChanges()automatisch, z. B. teil der Ausführung SaveChanges() oder SaveChangesAsync(CancellationToken).

DetectingAllChanges

Ein Ereignis, das ausgelöst wird, wenn Änderungen am Entitätsdiagramm erkannt werden sollen, entweder über einen expliziten Aufruf DetectChanges()oder automatisch, z. B. Teil der Ausführung SaveChanges() oder SaveChangesAsync(CancellationToken).

DetectingEntityChanges

Ein Ereignis wird ausgelöst, wenn Änderungen an einer einzelnen Entität erkannt werden, entweder über einen expliziten Aufruf DetectChanges() oder DetectChanges()automatisch, z. B. teil der Ausführung SaveChanges() oder SaveChangesAsync(CancellationToken).

StateChanged

Ein Ereignis wird ausgelöst, wenn eine Entität, die von dem zugeordneten Element DbContext nachverfolgt wird, von einer zu einer EntityState anderen verschoben wurde.

StateChanging

Ein Ereignis wird ausgelöst, wenn eine Entität, die vom zugeordneten DbContext Element nachverfolgt wird, von einer zu einer EntityState anderen verschoben wird.

Tracked

Ein Ereignis, das ausgelöst wird, wenn eine Entität vom Kontext nachverfolgt wird, entweder weil sie von einer Nachverfolgungsabfrage zurückgegeben wurde, oder weil sie dem Kontext angefügt oder hinzugefügt wurde.

Tracking

Ein Ereignis, das ausgelöst wird, wenn eine Entität vom Kontext nachverfolgt werden soll, entweder weil es von einer Nachverfolgungsabfrage zurückgegeben wird, oder weil sie dem Kontext angefügt oder hinzugefügt wird.

Explizite Schnittstellenimplementierungen

Name Beschreibung
IInfrastructure<IStateManager>.Instance
Veraltet.

Ruft den internen Zustands-Manager ab, der zum Speichern von Informationen über nachverfolgte Entitäten verwendet wird.

Diese Eigenschaft ist für die Verwendung durch Erweiterungsmethoden vorgesehen. Sie ist nicht für die Verwendung im Anwendungscode vorgesehen.

IResettableService.ResetState()

Setzt den Dienst zurück, damit er aus dem Pool verwendet werden kann.

IResettableService.ResetStateAsync(CancellationToken)

Bietet Zugriff auf Änderungsnachverfolgungsinformationen und -vorgänge für Entitätsinstanzen, die der Kontext nachverfolgt. Instanzen dieser Klasse werden in der Regel abgerufen ChangeTracker und sind nicht so konzipiert, dass sie direkt in Ihrem Anwendungscode erstellt werden.

Erweiterungsmethoden

Name Beschreibung
GetInfrastructure<T>(IInfrastructure<T>)

Ruft den Wert aus einer Eigenschaft ab, die mithilfe von IInfrastructure<T>ausgeblendet wird.

Diese Methode wird in der Regel von Datenbankanbietern (und anderen Erweiterungen) verwendet. Sie wird in der Regel nicht im Anwendungscode verwendet.

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Erstellt eine lesbare Darstellung der angegebenen Metadaten.

Warnung: Verlassen Sie sich nicht auf das Format der zurückgegebenen Zeichenfolge. Sie wurde nur für das Debuggen entwickelt und kann sich willkürlich zwischen Versionen ändern.

Gilt für: