Udostępnij za pośrednictwem


ChangeTracker Klasa

Definicja

Zapewnia dostęp do informacji i operacji śledzenia zmian dla wystąpień jednostek, które kontekst śledzi. Wystąpienia tej klasy są zwykle uzyskiwane z ChangeTracker klasy i nie są przeznaczone do bezpośredniego konstruowania w kodzie aplikacji.

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

Uwagi

Aby uzyskać więcej informacji i przykłady, zobacz Śledzenie zmian platformy EF Core .

Konstruktory

ChangeTracker(DbContext)

Ten interfejs API obsługuje infrastrukturę platformy Entity Framework Core i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu. Ten interfejs API może ulec zmianie lub zostać usunięty w przyszłych wersjach.

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

Jest to wewnętrzny interfejs API, który obsługuje infrastrukturę platformy Entity Framework Core i nie podlega tym samym standardom zgodności co publiczne interfejsy API. Można je zmienić lub usunąć bez powiadomienia w jakiejkolwiek wersji. Należy używać go bezpośrednio bezpośrednio w kodzie z wyjątkową ostrożnością i wiedząc, że może to spowodować błędy aplikacji podczas aktualizowania do nowej wersji programu Entity Framework Core.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

Ten interfejs API obsługuje infrastrukturę platformy Entity Framework Core i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu. Ten interfejs API może ulec zmianie lub zostać usunięty w przyszłych wersjach.

Właściwości

AutoDetectChangesEnabled

Pobiera lub ustawia wartość wskazującą, czy DetectChanges() metoda jest wywoływana automatycznie za pomocą metod i powiązanych DbContext klas.

CascadeDeleteTiming

Pobiera lub ustawia wartość wskazującą, kiedy jednostka zależna/podrzędna będzie miała ustawiony stan na Deleted po oznaczeniu jej jednostki nadrzędnej/głównej jako Deleted. Wartość domyślna toImmediate.

Context

Pobiera kontekst, do którego należy ten monitor zmian.

DebugView

Rozwiń tę właściwość w debugerze, aby uzyskać czytelny dla człowieka widok śledzonych jednostek.

Ostrzeżenie: nie należy polegać na formacie ciągów debugowania. Są one przeznaczone tylko do debugowania i mogą zmieniać się arbitralnie między wydaniami.

Aby uzyskać więcej informacji i przykłady, zobacz Śledzenie zmian platformy EF Core .

DeleteOrphansTiming

Pobiera lub ustawia wartość wskazującą, kiedy jednostka zależna/podrzędna będzie miała ustawiony stan na Deleted po zerwaniu z jednostki nadrzędnej/głównej za pomocą właściwości nawigacji lub klucza obcego ustawionej na wartość null. Wartość domyślna to Immediate.

LazyLoadingEnabled

Pobiera lub ustawia wartość wskazującą, czy właściwości nawigacji dla śledzonych jednostek zostaną załadowane przy pierwszym dostępie.

QueryTrackingBehavior

Pobiera lub ustawia zachowanie śledzenia zapytań LINQ uruchamianych względem kontekstu. Wyłączenie śledzenia zmian jest przydatne w scenariuszach tylko do odczytu, ponieważ pozwala uniknąć narzutów związanych z konfigurowaniem śledzenia zmian dla każdego wystąpienia jednostki. Nie należy wyłączać śledzenia zmian, jeśli chcesz manipulować wystąpieniami jednostek i utrwalać te zmiany w bazie danych przy użyciu polecenia SaveChanges().

Metody

AcceptAllChanges()

Akceptuje wszystkie zmiany wprowadzone w jednostkach w kontekście. Zakłada się, że śledzone jednostki reprezentują bieżący stan bazy danych. Ta metoda jest zwykle wywoływana przez SaveChanges() po pomyślnym zapisaniu zmian w bazie danych.

CascadeChanges()

Wymusza natychmiastowe kaskadowe usunięcie jednostek podrzędnych/zależnych, gdy są one zerwane z wymaganej jednostki nadrzędnej/głównej lub wymagana jednostka nadrzędna/główna jest usuwana. Zobacz: .

Clear()

Zatrzymuje śledzenie wszystkich aktualnie śledzonych jednostek.

DetectChanges()

Skanuje śledzone wystąpienia jednostek w celu wykrycia wszelkich zmian wprowadzonych w danych wystąpienia. DetectChanges() jest zwykle wywoływany automatycznie przez kontekst, gdy wymagane są aktualne informacje (przed SaveChanges() i podczas zwracania informacji o śledzeniu zmian). Zazwyczaj trzeba wywołać tę metodę tylko wtedy, gdy wyłączono AutoDetectChangesEnabledfunkcję .

Aby uzyskać więcej informacji i przykłady, zobacz Śledzenie zmian platformy EF Core .

Entries()

Zwraca wartość EntityEntry dla każdej jednostki śledzonej przez kontekst. Wpisy zapewniają dostęp do informacji i operacji śledzenia zmian dla każdej jednostki.

Entries<TEntity>()

Pobiera element EntityEntry dla wszystkich jednostek danego typu śledzonych przez kontekst. Wpisy zapewniają dostęp do informacji i operacji śledzenia zmian dla każdej jednostki.

HasChanges()

Sprawdza, czy jakiekolwiek nowe, usunięte lub zmienione jednostki są śledzone w taki sposób, że te zmiany zostaną wysłane do bazy danych, jeśli SaveChanges()SaveChangesAsync(CancellationToken) lub zostanie wywołana.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Rozpoczyna śledzenie jednostki i wszystkich jednostek, które są osiągalne przez przechodzenie przez jej właściwości nawigacji. Przechodzenie jest cykliczne, więc właściwości nawigacji wszystkich odnalezionych jednostek również będą skanowane. Określony callback element jest wywoływany dla każdej odnalezionej jednostki i musi ustawić, State w których należy śledzić poszczególne jednostki. Jeśli żaden stan nie zostanie ustawiony, jednostka pozostanie nieśledzona.

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

Rozpoczyna śledzenie jednostki i wszystkich jednostek, które są osiągalne, przechodząc przez jej właściwości nawigacji. Przechodzenie jest cykliczne, więc właściwości nawigacji wszystkich odnalezionych jednostek również będą skanowane. Określony callback element jest wywoływany dla każdej odnalezionej jednostki i musi ustawić, State w których należy śledzić poszczególne jednostki. Jeśli żaden stan nie zostanie ustawiony, jednostka pozostanie nieśledzona.

Ta metoda jest przeznaczona do użycia w scenariuszach bez połączenia, w których jednostki są pobierane przy użyciu jednego wystąpienia kontekstu, a następnie zmiany są zapisywane przy użyciu innego wystąpienia kontekstu. Przykładem jest usługa sieci Web, w której jedno wywołanie usługi pobiera jednostki z bazy danych, a drugie wywołanie usługi utrwala wszelkie zmiany w jednostkach. Każde wywołanie usługi używa nowego wystąpienia kontekstu, które jest usuwane po zakończeniu wywołania.

Zazwyczaj przechodzenie grafu powinno zostać zatrzymane przy każdym napotkaniu już śledzonej jednostki lub osiągnięciu jednostki, która nie powinna być śledzona. W przypadku tego typowego zachowania użyj przeciążenia TrackGraph(Object, Action<EntityEntryGraphNode>) . To przeciążenie, z drugiej strony, umożliwia wywołaniu zwrotnemu podjęcie decyzji o zakończeniu przechodzenia, ale onus jest następnie na obiekcie wywołującym, aby upewnić się, że przechodzenie nie wejdzie w nieskończoną pętlę.

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

Rozpoczyna śledzenie jednostki i wszystkich jednostek, które są osiągalne przez przechodzenie przez jej właściwości nawigacji. Przechodzenie jest cykliczne, więc właściwości nawigacji wszystkich odnalezionych jednostek również będą skanowane. Określony callback element jest wywoływany dla każdej odnalezionej jednostki i musi ustawić, State w których należy śledzić poszczególne jednostki. Jeśli żaden stan nie zostanie ustawiony, jednostka pozostanie nieśledzona.

Zdarzenia

DetectedAllChanges

Zdarzenie zostało wyzwolone, gdy wszelkie zmiany zostały wykryte na grafie jednostki za pośrednictwem jawnego wywołania metody DetectChanges()lub automatycznie, takiego jak część wykonywania SaveChanges() lub SaveChangesAsync(CancellationToken).

DetectedEntityChanges

Zdarzenie zostało wyzwolone, gdy wszelkie zmiany zostały wykryte w pojedynczej jednostce za pośrednictwem jawnego wywołania metody DetectChanges() lub DetectChanges()lub automatycznie, takiego jak część wykonywania SaveChanges() lub SaveChangesAsync(CancellationToken).

DetectingAllChanges

Zdarzenie zostało wyzwolone podczas wykrywania zmian w grafie jednostki, które mają się zdarzyć, za pośrednictwem jawnego wywołania metody DetectChanges()lub automatycznie, takiego jak część wykonywania SaveChanges() lub SaveChangesAsync(CancellationToken).

DetectingEntityChanges

Zdarzenie wyzwolone podczas wykrywania zmian w pojedynczej jednostce ma się zdarzyć za pośrednictwem jawnego wywołania metody DetectChanges() lub DetectChanges()lub automatycznie, takiego jak część wykonywania SaveChanges() lub SaveChangesAsync(CancellationToken).

StateChanged

Zdarzenie zostało wyzwolone, gdy jednostka śledzona przez skojarzona DbContext została przeniesiona z jednego EntityState do drugiego.

StateChanging

Zdarzenie zostało wyzwolone, gdy jednostka śledzona przez skojarzona DbContext jest przenoszona z jednego EntityState do drugiego.

Tracked

Zdarzenie zostało wyzwolone, gdy jednostka jest śledzona przez kontekst, ponieważ została zwrócona z zapytania śledzenia lub została dołączona lub dodana do kontekstu.

Tracking

Zdarzenie zostało wyzwolone, gdy jednostka ma być śledzona przez kontekst, ponieważ jest zwracana z zapytania śledzenia lub jest dołączana lub dodawana do kontekstu.

Jawne implementacje interfejsu

IInfrastructure<IStateManager>.Instance
Nieaktualne..

Pobiera wewnętrzny menedżer stanu używany do przechowywania informacji o śledzonych jednostkach.

Ta właściwość jest przeznaczona do użycia przez metody rozszerzenia. Nie jest przeznaczony do użycia w kodzie aplikacji.

IResettableService.ResetState()

Resetuje usługę, aby mogła być używana z puli.

IResettableService.ResetStateAsync(CancellationToken)

Zapewnia dostęp do informacji i operacji śledzenia zmian dla wystąpień jednostek, które kontekst śledzi. Wystąpienia tej klasy są zwykle uzyskiwane z ChangeTracker klasy i nie są przeznaczone do bezpośredniego konstruowania w kodzie aplikacji.

Metody rozszerzania

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Tworzy czytelną dla człowieka reprezentację danych metadanych.

Ostrzeżenie: nie należy polegać na formacie zwracanego ciągu. Jest ona przeznaczona tylko do debugowania i może zmieniać się arbitralnie między wersjami.

GetInfrastructure<T>(IInfrastructure<T>)

Pobiera wartość z właściwości ukrytej przy użyciu polecenia IInfrastructure<T>.

Ta metoda jest zwykle używana przez dostawców baz danych (i innych rozszerzeń). Zwykle nie jest używany w kodzie aplikacji.

Dotyczy