Język

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

Uwagi

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

Konstruktory

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

Jest to wewnętrzny interfejs API, który obsługuje infrastrukturę Entity Framework Core i nie podlega tym samym standardom zgodności co publiczne interfejsy API. Można go zmienić lub usunąć bez powiadomienia w jakiejkolwiek wersji. Należy używać go 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 Entity Framework Core.

ChangeTracker(DbContext)

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

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

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

Właściwości

Nazwisko Opis
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ładów, zobacz Śledzenie zmian platformy EF Core .

DeleteOrphansTiming

Pobiera lub ustawia wartość wskazującą, kiedy jednostka zależna/podrzędna będzie miała ustawiony Deleted stan na 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 na pierwszy dostęp.

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

Nazwisko Opis
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() program 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 sama usuwana. Zobacz: DeleteBehavior.

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 up-to- informacje daty są wymagane (przed SaveChanges() i podczas zwracania informacji śledzenia zmian). Zazwyczaj należy wywołać tę metodę tylko wtedy, gdy wyłączono AutoDetectChangesEnabledfunkcję .

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.

GetEntriesForState(Boolean, Boolean, Boolean, Boolean)

Pobiera element EntityEntry dla każdej jednostki śledzonej przez kontekst, który ma podane stany. Wpisy zapewniają dostęp do informacji i operacji śledzenia zmian dla każdej jednostki.

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

Pobiera element EntityEntry<TEntity> dla każdej jednostki danego typu śledzonego przez kontekst, który ma podane stany. 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 jest wywoływana.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Rozpoczyna śledzenie jednostki i wszystkich jednostek, które są osiągalne, przechodząc przez jej właściwości nawigacji. Przechodzenie jest rekursywne, więc właściwości nawigacji wszystkich odnalezionych jednostek również zostaną zeskanowane. callback Określony element jest wywoływany dla każdej odnalezionej jednostki i musi ustawićState, że każda jednostka powinna być śledzona. Jeśli nie ustawiono żadnego stanu, jednostka pozostaje 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 rekursywne, więc właściwości nawigacji wszystkich odnalezionych jednostek również zostaną zeskanowane. callback Określony element jest wywoływany dla każdej odnalezionej jednostki i musi ustawićState, że każda jednostka powinna być śledzona. Jeśli nie ustawiono żadnego stanu, jednostka pozostaje 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 internetowa, w której jedno wywołanie usługi pobiera jednostki z bazy danych, a inne 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 TrackGraph(Object, Action<EntityEntryGraphNode>) przeciążenia. 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, przechodząc przez jej właściwości nawigacji. Przechodzenie jest rekursywne, więc właściwości nawigacji wszystkich odnalezionych jednostek również zostaną zeskanowane. callback Określony element jest wywoływany dla każdej odnalezionej jednostki i musi ustawićState, że każda jednostka powinna być śledzona. Jeśli nie ustawiono żadnego stanu, jednostka pozostaje nieśledzona.

Zdarzenia

Nazwisko Opis
DetectedAllChanges

Zdarzenie zostało wyzwolone, gdy wszelkie zmiany zostały wykryte na grafie jednostki za pośrednictwem jawnego wywołania DetectChanges()metody lub automatycznego, 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 DetectChanges() metody 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 ma się zdarzyć, za pośrednictwem jawnego wywołania DetectChanges()metody lub automatycznego, 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 jednej EntityState do drugiej.

StateChanging

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

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

Nazwisko Opis
IInfrastructure<IStateManager>.Instance
Przestarzałe.

Pobiera wewnętrznego menedżera stanu używanego 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

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

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

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

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

Dotyczy