Jazyk

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 jsou obvykle získány z ChangeTracker a není navržena tak, aby byla přímo vytvořena v kódu aplikace.

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

Poznámky

Další informace a příklady najdete v tématu EF Core Change Tracking .

Konstruktory

Název Description
ChangeTracker(DbContext, IStateManager, IChangeDetector, IModel, IEntityEntryGraphIterator)

Jedná se o interní rozhraní API, které podporuje infrastrukturu Entity Framework Core a nevztahuje se na stejné standardy kompatibility jako veřejná rozhraní API. Může se změnit nebo odebrat bez upozornění v jakékoli verzi. Měli byste ho používat přímo ve svém kódu s extrémní opatrností a vědět, že to může vést k selháním aplikace při aktualizaci na novou Entity Framework Core verzi.

ChangeTracker(DbContext)

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

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

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

Vlastnosti

Název Description
AutoDetectChangesEnabled

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

CascadeDeleteTiming

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

Context

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

DebugView

Rozbalte tuto vlastnost v ladicím programu pro zobrazení entit sledovaných člověkem.

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

Další informace a příklady najdete v tématu EF Core Change Tracking .

DeleteOrphansTiming

Získá nebo nastaví hodnotu indikující, kdy závislá/podřízená entita bude mít svůj stav nastaven na Deleted jednou vyřazení z nadřazené nebo hlavní entity prostřednictvím navigace nebo cizí klíč vlastnost nastavena na hodnotu null. Výchozí hodnota je Immediate.

LazyLoadingEnabled

Získá nebo nastaví hodnotu označující, zda navigační vlastnosti sledovaných entit budou načteny při prvním přístupu.

QueryTrackingBehavior

Získá nebo nastaví chování sledování pro dotazy LINQ spuštěné v kontextu. Zakázání sledování změn je užitečné pro scénáře jen pro čtení, protože zabraňuje režii při nastavování 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

Název Description
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. Tato metoda se obvykle volá SaveChanges() po úspěšném uložení změn do databáze.

CascadeChanges()

Vynutí okamžité kaskádové odstranění podřízených/závislých entit, pokud jsou buď vyřazeny z požadované nadřazené nebo hlavní entity, nebo se odstraní požadovaná nadřazená nebo hlavní entita. Viz DeleteBehavior.

Clear()

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

DetectChanges()

Vyhledá sledované instance entit a zjistí všechny změny provedené v datech instance. DetectChanges() je obvykle volána automaticky kontextem, když up-to-date informace jsou vyžadovány (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.

Entries()

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

Entries<TEntity>()

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

GetEntriesForState(Boolean, Boolean, Boolean, Boolean)

EntityEntry Získá pro každou entitu, kterou sleduje kontext, který má dané stavy. Položky poskytují přístup k informacím a operacím sledování změn pro každou entitu.

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

EntityEntry<TEntity> Získá pro každou entitu daného typu sledovaný kontextem, který má dané stavy. Položky poskytují přístup k informacím a operacím sledování změn pro každou entitu.

HasChanges()

Zkontroluje, jestli se sledují 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) volána.

TrackGraph(Object, Action<EntityEntryGraphNode>)

Začne sledovat entitu a všechny entity, které jsou dostupné procházením jeho navigačních vlastností. Procházení je rekurzivní, takže budou prohledány také navigační vlastnosti všech zjištěných entit. Zadaná callback entita se volá 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 jeho navigačních vlastností. Procházení je rekurzivní, takže budou prohledány také navigační vlastnosti všech zjištěných entit. Zadaná callback entita se volá 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 uloží 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 zachovají všechny změny entit. Každé volání služby používá novou instanci kontextu, která je uvolněna po dokončení volání.

Při výskytu již sledované entity nebo při dosažení entity, která by neměla být sledována, by se měla obvykle zastavit procházení grafu. Pro toto typické chování použijte TrackGraph(Object, Action<EntityEntryGraphNode>) přetížení. Toto přetížení na druhé straně umožňuje zpětnému volání rozhodnout, kdy bude procházení ukončeno, ale onus je pak na volajícím, aby se zajistilo, že procházení nepřejde 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 jeho navigačních vlastností. Procházení je rekurzivní, takže budou prohledány také navigační vlastnosti všech zjištěných entit. Zadaná callback entita se volá 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

Název Description
DetectedAllChanges

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

DetectedEntityChanges

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

DetectingAllChanges

Událost se aktivovala při zjišťování změn v grafu entit, ke kterému dochází, buď prostřednictvím explicitního volání DetectChanges(), nebo automaticky, jako je například součást provádění SaveChanges() nebo SaveChangesAsync(CancellationToken).

DetectingEntityChanges

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

StateChanged

Událost se aktivuje, když se entita, která je sledována přidruženým objektem DbContext , přesunula z jedné EntityState do druhé.

StateChanging

Událost se aktivuje, když se entita, která je sledována přidruženým DbContext objektem, přesouvá z jedné EntityState na druhou.

Tracked

Událost se aktivuje, když je entita sledována kontextem, a to buď proto, že byla vrácena z 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 kontextem, 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í

Název Description
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čená pro použití metodami rozšíření. Není určen k použití v kódu aplikace.

IResettableService.ResetState()

Obnoví službu tak, 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 jsou obvykle získány z ChangeTracker a není navržena tak, aby byla přímo vytvořena v kódu aplikace.

Metody rozšíření

Název Description
GetInfrastructure<T>(IInfrastructure<T>)

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

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

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

Vytvoří čitelné znázornění daných metadat člověkem.

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

Platí pro