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 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á |
| 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á 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á |
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. |