Sdílet prostřednictvím


ChangeTracker Třída

Definice

Poskytuje přístup k informacím a operacím sledování změn pro instance entit, které kontext sleduje. Instance této třídy se obvykle získávají z ChangeTracker a nejsou navrženy tak, aby byly přímo vytvořeny v kódu aplikace.

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
Dědičnost
ChangeTracker
Implementuje
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

Poznámky

Další informace a příklady najdete v tématu Sledování změn EF Core .

Konstruktory

ChangeTracker(DbContext)

Toto rozhraní API podporuje infrastrukturu Entity Framework Core a není určeno k použití přímo z vašeho kódu. Toto rozhraní API se může v budoucích verzích změnit nebo odebrat.

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

Toto je interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nepodléhá stejným standardům kompatibility jako veřejná rozhraní API. Může se změnit nebo odebrat bez předchozího upozornění v jakékoli verzi. Měli byste ho používat přímo v kódu pouze s extrémní opatrností a s vědomím, že to může vést k selhání aplikací při aktualizaci na novou verzi Entity Framework Core.

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

Toto rozhraní API podporuje infrastrukturu Entity Framework Core a není určeno k použití přímo z vašeho kódu. Toto rozhraní API se může v budoucích verzích změnit nebo odebrat.

Vlastnosti

AutoDetectChangesEnabled

Získá nebo nastaví hodnotu označující, zda DetectChanges() je metoda volána automaticky metodami DbContext a související třídy.

CascadeDeleteTiming

Získá nebo nastaví hodnotu označující, kdy závislá nebo podřízená entita bude mít stav nastavený na, Deleted jakmile je její nadřazená nebo hlavní entita označena jako Deleted. Výchozí hodnota jeImmediate.

Context

Získá kontext, do který patří sledování změn.

DebugView

Rozbalte tuto vlastnost v ladicím programu a zobrazte tak čitelné zobrazení sledovaných entit.

Upozornění: Nespoléhejte na formát řetězců ladění. Jsou určené pouze pro ladění a mezi verzemi se můžou libovolně měnit.

Další informace a příklady najdete v tématu Sledování změn EF Core .

DeleteOrphansTiming

Získá nebo nastaví hodnotu označující, kdy závislá/podřízená entita bude mít svůj stav nastaven na Deleted po oddělení od nadřazené/hlavní entity buď navigační nebo cizí klíč vlastnost nastavena na hodnotu null. Výchozí hodnota je Immediate.

LazyLoadingEnabled

Získá nebo nastaví hodnotu určující, zda navigační vlastnosti pro sledované entity budou načteny při prvním přístupu.

QueryTrackingBehavior

Získá nebo nastaví chování sledování linq dotazy spuštěné v kontextu. Zakázání sledování změn je užitečné ve scénářích jen pro čtení, protože se tím vyhnete režijním nákladům na nastavení sledování změn pro každou instanci entity. Sledování změn byste neměli zakázat, pokud chcete manipulovat s instancemi entit a zachovat tyto změny v databázi pomocí SaveChanges().

Metody

AcceptAllChanges()

Přijímá všechny změny provedené v entitách v kontextu. Předpokládá se, že sledované entity představují aktuální stav databáze. Tuto metodu obvykle volá po SaveChanges() úspěšném uložení změn do databáze.

CascadeChanges()

Vynutí okamžité kaskádové odstranění podřízených nebo závislých entit, pokud jsou buď odděleny od požadované nadřazené nebo hlavní entity, nebo je odstraněna samotná požadovaná nadřazená/hlavní entita. Viz třída DeleteBehavior.

Clear()

Zastaví sledování všech aktuálně sledovaných entit.

DetectChanges()

Zkontroluje instance sledovaných entit a zjistí změny provedené v datech instance. DetectChanges() je obvykle volána automaticky kontextem, když jsou vyžadovány aktuální informace (před SaveChanges() a při vrácení informací o sledování změn). Tuto metodu obvykle potřebujete volat pouze v případě, že jste zakázali AutoDetectChangesEnabled.

Další informace a příklady najdete v tématu Sledování změn EF Core .

Entries()

Vrátí hodnotu EntityEntry pro každou entitu, kterou sleduje kontext. Tyto položky poskytují přístup k informacím a operacím sledování změn pro každou entitu.

Entries<TEntity>()

Získá pro EntityEntry všechny entity daného typu sledování kontextem. Tyto položky poskytují přístup k informacím a operacím sledování změn pro každou entitu.

HasChanges()

Zkontroluje, jestli jsou sledovány nějaké nové, odstraněné nebo změněné entity, aby se tyto změny odeslaly do databáze, pokud SaveChanges() je volána nebo SaveChangesAsync(CancellationToken) je volána.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Začne sledovat entitu a všechny entity, které jsou dostupné procházením jejích navigačních vlastností. Procházení je rekurzivní, takže se budou kontrolovat i navigační vlastnosti všech zjištěných entit. Zadaný callback je volána pro každou zjištěnou entitu State a musí nastavit, ve které se má každá entita sledovat. Pokud není nastavený žádný stav, zůstane entita nesledovaná.

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

Začne sledovat entitu a všechny entity, které jsou dostupné procházením jejích navigačních vlastností. Procházení je rekurzivní, takže se budou kontrolovat i navigační vlastnosti všech zjištěných entit. Zadaný callback je volána pro každou zjištěnou entitu State a musí nastavit, ve které se má každá entita sledovat. Pokud není nastavený žádný stav, zůstane entita nesledovaná.

Tato metoda je určená pro použití v odpojených scénářích, kdy se entity načítají pomocí jedné instance kontextu a pak se změny ukládají pomocí jiné instance kontextu. Příkladem je webová služba, kde jedno volání služby načítá entity z databáze a jiné volání služby zachovává všechny změny entit. Každé volání služby používá novou instanci kontextu, která se odstraní po dokončení volání.

Procházení grafu by se obvykle mělo zastavit při výskytu již sledované entity nebo při dosažení entity, která by neměla být sledována. Pro toto typické chování použijte TrackGraph(Object, Action<EntityEntryGraphNode>) přetížení. Toto přetížení na druhou stranu umožňuje zpětnému volání rozhodnout, kdy bude procházení ukončeno, ale je pak na volajícím, aby se zajistilo, že procházení nevstoupí do nekonečné smyčky.

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

Začne sledovat entitu a všechny entity, které jsou dostupné procházením jejích navigačních vlastností. Procházení je rekurzivní, takže se budou kontrolovat i navigační vlastnosti všech zjištěných entit. Zadaný callback je volána pro každou zjištěnou entitu State a musí nastavit, ve které se má každá entita sledovat. Pokud není nastavený žádný stav, zůstane entita nesledovaná.

Událost

DetectedAllChanges

Událost se aktivovala, když byly zjištěny jakékoli změny v grafu entit, a to buď explicitním voláním DetectChanges(), nebo automaticky, například při provádění SaveChanges() nebo SaveChangesAsync(CancellationToken).

DetectedEntityChanges

Událost se aktivuje, když byly zjištěny jakékoli změny v jedné entitě, a to buď explicitním voláním DetectChanges() nebo DetectChanges(), nebo automaticky, například při provádění SaveChanges() nebo SaveChangesAsync(CancellationToken).

DetectingAllChanges

Událost se aktivovala při zjišťování změn v grafu entit, ke které má dojít, a to buď explicitním voláním DetectChanges(), nebo automaticky, například při provádění SaveChanges() nebo SaveChangesAsync(CancellationToken).

DetectingEntityChanges

Událost aktivovaná při zjišťování změn v jedné entitě se chystá nastat, a to buď explicitním voláním DetectChanges() nebo DetectChanges(), nebo automaticky, například při provádění SaveChanges() nebo SaveChangesAsync(CancellationToken).

StateChanged

Událost se aktivovala, když se entita, která je sledována přidruženou entitou DbContext , přesunula z jedné EntityState do druhé.

StateChanging

Událost se aktivuje, když se entita, která je sledována přidruženou DbContext entitou, přesouvá z jedné EntityState na jinou.

Tracked

Událost se aktivuje, když je entita sledována kontextem, a to buď proto, že byla vrácena ze sledovacího dotazu, nebo proto, že byla připojena nebo přidána do kontextu.

Tracking

Událost se aktivuje, když se entita chystá sledovat kontext, a to buď proto, že je vrácena ze sledovacího dotazu, nebo proto, že je připojena nebo přidána do kontextu.

Explicitní implementace rozhraní

IInfrastructure<IStateManager>.Instance
Zastaralé..

Získá interní správce stavu, který se používá k ukládání informací o sledovaných entitách.

Tato vlastnost je určena pro použití rozšiřujícími metodami. Není určen pro použití v kódu aplikace.

IResettableService.ResetState()

Resetuje službu, aby ji bylo možné použít z fondu.

IResettableService.ResetStateAsync(CancellationToken)

Poskytuje přístup k informacím a operacím sledování změn pro instance entit, které kontext sleduje. Instance této třídy se obvykle získávají z ChangeTracker a nejsou navrženy tak, aby byly přímo vytvořeny v kódu aplikace.

Metody rozšíření

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Vytvoří čitelné vyjádření daných metadat.

Upozornění: Nespoléhejte na formát vráceného řetězce. Je určen pouze pro ladění a mezi verzemi se může libovolně měnit.

GetInfrastructure<T>(IInfrastructure<T>)

Získá hodnotu z vlastnosti, která je skrytá pomocí IInfrastructure<T>.

Tuto metodu obvykle používají poskytovatelé databází (a další rozšíření). Obecně se nepoužívá v kódu aplikace.

Platí pro