ChangeTracker Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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ý |
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ý 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ý |
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
Entity Framework