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 von ChangeTracker abgerufen und sind nicht für die direkte Erstellung in Ihrem Anwendungscode konzipiert.

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

Hinweise

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

Konstruktoren

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 sich ändern oder in zukünftigen Releases entfernt werden.

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. Es kann ohne Vorankündigung in einer Version geändert oder entfernt werden. Sie sollten es nur mit äußerster Vorsicht direkt im Code verwenden und wissen, dass dies beim Aktualisieren auf ein neues Entity Framework Core-Release zu Anwendungsfehlern führen kann.

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 sich ändern oder in zukünftigen Releases entfernt werden.

Eigenschaften

AutoDetectChangesEnabled

Ruft einen Wert ab, der angibt, ob die DetectChanges() Methode von Methoden und DbContext verwandten Klassen automatisch aufgerufen wird, oder legt den Wert fest.

CascadeDeleteTiming

Ruft einen Wert ab, der angibt, wann der Status einer abhängigen/untergeordneten Entität auf Deleted festgelegt wird, sobald ihre übergeordnete/Prinzipalentität als markiert wurde, oder legt diesen fest Deleted. Der Standardwert istImmediate.

Context

Ruft den Kontext ab, zu dem dieser Änderungsnachverfolgung gehört.

DebugView

Erweitern Sie diese Eigenschaft im Debugger, um eine lesbare Ansicht der entitäten zu erhalten, die nachverfolgt werden.

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

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

DeleteOrphansTiming

Ruft einen Wert ab, der angibt, wann der Zustand einer abhängigen/untergeordneten Entität auf Deleted festgelegt wird, sobald der Status von einer übergeordneten/Prinzipalentität getrennt wird, oder legt diesen fest, indem entweder eine Navigations- oder Fremdschlüsseleigenschaft auf NULL festgelegt wird. Standardwert: Immediate.

LazyLoadingEnabled

Ruft einen Wert ab, der angibt, ob Navigationseigenschaften für nachverfolgte Entitäten beim ersten Zugriff geladen werden, oder legt diesen fest.

QueryTrackingBehavior

Ruft das Nachverfolgungsverhalten für LINQ-Abfragen ab, die für den Kontext ausgeführt werden, oder legt es fest. Das Deaktivieren der Änderungsnachverfolgung ist für schreibgeschützte Szenarien nützlich, da dadurch der Aufwand beim Einrichten der Änderungsnachverfolgung für jede Entität instance vermieden wird. Sie sollten die Änderungsnachverfolgung nicht deaktivieren, wenn Sie Entitätsinstanzen bearbeiten und diese Änderungen mithilfe von SaveChanges()beibehalten möchten.

Methoden

AcceptAllChanges()

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

CascadeChanges()

Erzwingt das sofortige kaskadierende Löschen untergeordneter/abhängiger Entitäten, wenn sie entweder von einer erforderlichen übergeordneten/Prinzipalentität getrennt oder die erforderliche übergeordnete/prinzipale Entität selbst gelöscht wird. Siehe DeleteBehavior.

Clear()

Beendet die Nachverfolgung aller derzeit nachverfolgten Entitäten.

DetectChanges()

Überprüft die nachverfolgten Entitätsinstanzen, um alle Änderungen zu erkennen, die an den instance Daten vorgenommen wurden. DetectChanges() wird normalerweise automatisch vom Kontext aufgerufen, wenn aktuelle Informationen erforderlich sind (vor SaveChanges() und beim Zurückgeben von Änderungsnachverfolgungsinformationen). Sie müssen diese Methode in der Regel nur aufrufen, wenn Sie deaktiviert AutoDetectChangesEnabledhaben.

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

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.

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 durch das Durchlaufen der Navigationseigenschaften erreichbar sind. Der Durchlauf ist rekursiv, sodass auch die Navigationseigenschaften aller ermittelten Entitäten überprüft werden. Der angegebene callback wird für jede ermittelte Entität aufgerufen und muss festlegen State , in der jede Entität nachverfolgt werden soll. Wenn kein Zustand festgelegt ist, bleibt die Entität nicht nachverfolgt.

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

Beginnt mit der Nachverfolgung einer Entität und aller Entitäten, die durch das Durchlaufen der Navigationseigenschaften erreichbar sind. Der Durchlauf ist rekursiv, sodass auch die Navigationseigenschaften aller ermittelten Entitäten überprüft werden. Der angegebene callback wird für jede ermittelte Entität aufgerufen und muss festlegen State , in der jede Entität nachverfolgt werden soll. Wenn kein Zustand festgelegt ist, bleibt die Entität nicht nachverfolgt.

Diese Methode ist für die Verwendung in getrennten Szenarien konzipiert, in denen Entitäten mithilfe einer instance des Kontexts abgerufen werden und Änderungen dann mit einem anderen instance des Kontexts gespeichert werden. Ein Beispiel hierfür ist ein Webdienst, bei dem ein Dienstaufruf Entitäten aus der Datenbank und ein anderer Dienstaufruf alle Änderungen an den Entitäten speichert. Jeder Dienstaufruf verwendet eine neue instance des Kontexts, der nach Abschluss des Aufrufs verworfen wird.

In der Regel sollte die Durchquerung des Diagramms beendet werden, wenn eine bereits nachverfolgte Entität gefunden wird oder wenn eine Entität erreicht wird, die nicht nachverfolgt werden sollte. Verwenden Sie für dieses typische Verhalten die TrackGraph(Object, Action<EntityEntryGraphNode>) Überladung. Diese Überladung ermöglicht es dem Rückruf hingegen, zu entscheiden, wann die Traversal endet, aber der Onus befindet sich dann auf dem Aufrufer, um sicherzustellen, dass traversal nicht in eine Endlosschleife wechselt.

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

Beginnt mit der Nachverfolgung einer Entität und aller Entitäten, die durch das Durchlaufen der Navigationseigenschaften erreichbar sind. Der Durchlauf ist rekursiv, sodass auch die Navigationseigenschaften aller ermittelten Entitäten überprüft werden. Der angegebene callback wird für jede ermittelte Entität aufgerufen und muss festlegen State , in der jede Entität nachverfolgt werden soll. Wenn kein Zustand festgelegt ist, bleibt die Entität nicht nachverfolgt.

Ereignisse

DetectedAllChanges

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

DetectedEntityChanges

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

DetectingAllChanges

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

DetectingEntityChanges

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

StateChanged

Ein Ausgelöstes Ereignis, wenn eine Entität, die von dem zugeordneten DbContext nachverfolgt wird, von einem zu einem EntityState anderen verschoben wurde.

StateChanging

Ein Ereignis wird ausgelöst, wenn eine Entität, die von dem zugeordneten DbContext nachverfolgt wird, von einem zu einem EntityState anderen wechselt.

Tracked

Ein Ereignis wird ausgelöst, 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 wird ausgelöst, wenn eine Entität vom Kontext nachverfolgt werden soll, entweder weil sie von einer Nachverfolgungsabfrage zurückgegeben wird, oder weil sie dem Kontext angefügt oder hinzugefügt wird.

Explizite Schnittstellenimplementierungen

IInfrastructure<IStateManager>.Instance
Veraltet..

Ruft den internen Zustands-Manager ab, der zum Speichern von Informationen zu nachverfolgten 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, sodass 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 von ChangeTracker abgerufen und sind nicht für die direkte Erstellung in Ihrem Anwendungscode konzipiert.

Erweiterungsmethoden

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Erstellt eine lesbare Darstellung der angegebenen Metadaten.

Warnung: Verlassen Sie sich nicht auf das Format der zurückgegebenen Zeichenfolge. Es ist nur für das Debuggen konzipiert und kann sich zwischen Releases beliebig ändern.

GetInfrastructure<T>(IInfrastructure<T>)

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

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

Gilt für: