ChangeTracker 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
提供存取變更追蹤資訊及相關情境所追蹤實體實例的操作。 這個類別的實例通常是從 ChangeTracker 應用程式中取得,且並非設計成直接在應用程式程式碼中建構。
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
- 繼承
-
ChangeTracker
- 屬性
- 實作
-
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService
備註
更多資訊與範例請參閱 EF Core 變更追蹤 。
建構函式
| 名稱 | Description |
|---|---|
| ChangeTracker(DbContext, IStateManager, IChangeDetector, IModel, IEntityEntryGraphIterator) |
這是一個內部 API,支援 Entity Framework Core 基礎架構,且不受公開 API 相同的相容性標準約束。 該內容可能會在任何新聞稿中未經通知而更改或移除。 你應該只在程式碼中直接使用它,並且要非常謹慎,並且要知道這樣做可能會導致更新到新的 Entity Framework Core 版本時應用程式失敗。 |
| ChangeTracker(DbContext) |
此 API 支援 Entity Framework Core 基礎架構,並非設計用來直接從您的程式碼中使用。 此 API 可能會在未來版本中變更或移除。 |
| ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext) |
此 API 支援 Entity Framework Core 基礎架構,並非設計用來直接從您的程式碼中使用。 此 API 可能會在未來版本中變更或移除。 |
屬性
| 名稱 | Description |
|---|---|
| AutoDetectChangesEnabled |
取得或設定一個值,指示該方法是否 DetectChanges() 會被相關類別的方法 DbContext 自動呼叫。 |
| CascadeDeleteTiming |
取得或設定一個值,指示當其父/主實體標記Deleted為 後,受依賴/子實體的狀態何時會被設定為 Deleted 。 預設值為Immediate。 |
| Context |
了解這個變更追蹤器所屬的背景。 |
| DebugView |
在除錯器中展開此屬性,即可讓人類能閱讀追蹤的實體。 警告:請勿依賴除錯字串的格式。 它們僅設計用於除錯,且在不同版本間可能任意變更。 更多資訊與範例請參閱 EF Core 變更追蹤 。 |
| DeleteOrphansTiming |
取得或設定一個值,表示當依賴/子實體從父/主實體切斷後,透過導覽或外鍵屬性設為空時,狀態會被設定為Deleted 預設值為 Immediate。 |
| LazyLoadingEnabled |
取得或設定一個值,指示是否會在首次存取時載入追蹤實體的導航屬性。 |
| QueryTrackingBehavior |
針對上下文執行的 LINQ 查詢,取得或設定追蹤行為。 關閉變更追蹤對於唯讀情境很有用,因為它避免了為每個實體實例設定變更追蹤的額外負擔。 如果你想操作實體實例並將變更持久化到資料庫 SaveChanges(),就不應該關閉變更追蹤。 |
方法
| 名稱 | Description |
|---|---|
| AcceptAllChanges() |
接受所有在上下文中對實體所做的變更。 假設追蹤的實體代表資料庫的當前狀態。 此方法通常在變更成功儲存到資料庫後被呼叫 SaveChanges() 。 |
| CascadeChanges() |
當子/受扶養實體從必須的父/主要實體中斷,或該必需的父/主要實體本身被刪除時,強制立即連鎖刪除。 參見 DeleteBehavior。 |
| Clear() |
停止追蹤所有目前被追蹤的實體。 |
| DetectChanges() |
掃描追蹤實體實例,偵測實例資料的任何變更。 DetectChanges() 通常在需要 up-to日期資訊(在返回變更追蹤資訊之前 SaveChanges() 及回傳時)會自動呼叫上下文。 通常只有在你已經停用 AutoDetectChangesEnabled時才需要呼叫這個方法。 |
| Entries() |
回傳每個被上下文追蹤的實體的 a EntityEntry 。 這些條目提供每個實體的變更追蹤資訊與操作存取權限。 |
| Entries<TEntity>() |
對於所有被上下文追蹤的某一類型實體,都會得到 一個 EntityEntry 。 這些條目提供每個實體的變更追蹤資訊與操作存取權限。 |
| GetEntriesForState(Boolean, Boolean, Boolean, Boolean) |
每個被上下文追蹤的實體都會得到 EntityEntry 一個,該上下文包含該狀態。 這些條目提供每個實體的變更追蹤資訊與操作存取權限。 |
| GetEntriesForState<TEntity>(Boolean, Boolean, Boolean, Boolean) |
對於具有該狀態的上下文追蹤的每個特定類型的實體,會得到 EntityEntry<TEntity> 一個。 這些條目提供每個實體的變更追蹤資訊與操作存取權限。 |
| HasChanges() |
檢查是否有新的、刪除或變更的實體被追蹤,使這些變更在被呼叫時SaveChanges()SaveChangesAsync(CancellationToken)會傳送到資料庫。 |
| TrackGraph(Object, Action<EntityEntryGraphNode>) |
開始追蹤一個實體及其可透過其導航屬性抵達的實體。
遍歷是遞迴的,因此任何發現的實體的導航屬性也會被掃描。
指定 |
| TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode,TState,Boolean>) |
開始追蹤一個實體及其可達的實體,透過遍歷其導航屬性。
遍歷是遞迴的,因此任何發現的實體的導航屬性也會被掃描。
指定 此方法設計用於斷開情境,即先用一個上下文實例檢索實體,然後在另一個上下文實例中儲存變更。 例如,一個網路服務中,一個服務呼叫從資料庫中擷取實體,另一個服務呼叫則持續存在實體的任何變更。 每個服務呼叫都會使用一個新的上下文實例,當通話結束時會被處置。 通常,當遇到已追蹤的實體或不該追蹤的實體時,圖表的遍歷應該停止。 針對這種典型行為,使用過載。TrackGraph(Object, Action<EntityEntryGraphNode>) 這種過載則讓回撥決定穿越何時結束,但責任落在呼叫者身上,確保穿越不會進入無限迴圈。 |
| TrackGraph<TState>(Object, TState, Func<EntityEntryGraphNode<TState>,Boolean>) |
開始追蹤一個實體及其可透過其導航屬性抵達的實體。
遍歷是遞迴的,因此任何發現的實體的導航屬性也會被掃描。
指定 |
事件
| 名稱 | Description |
|---|---|
| DetectedAllChanges |
當偵測到實體圖有任何變更時,該事件會觸發,無論是透過明確呼叫 DetectChanges(),或是自動執行,例如SaveChanges()SaveChangesAsync(CancellationToken)執行的一部分。 |
| DetectedEntityChanges |
當偵測到單一實體有任何變更時,會觸發事件,無論是透過明確呼叫DetectChanges()或 DetectChanges(),或自動執行SaveChanges()SaveChangesAsync(CancellationToken),例如執行或 。 |
| DetectingAllChanges |
當偵測到實體圖即將發生變化時會觸發的事件,無論是透過明確呼叫 DetectChanges(),或是自動執行,例如執行的一部分SaveChanges()。SaveChangesAsync(CancellationToken) |
| DetectingEntityChanges |
當偵測到單一實體變更即將發生時,事件即將發生,可能是透過明確呼叫或 DetectChanges()DetectChanges(),或自動觸發,例如執行SaveChanges()SaveChangesAsync(CancellationToken)或 。 |
| StateChanged |
當被關聯 DbContext 追蹤的實體從一個 EntityState 實體移動到另一個時,觸發的事件。 |
| StateChanging |
當被關聯 DbContext 追蹤的實體從一個 EntityState 實體移動到另一個時,觸發的事件。 |
| Tracked |
當一個實體被上下文追蹤時,該事件會觸發,無論是因為它從追蹤查詢中回傳,或是因為它被附加或新增到上下文中。 |
| Tracking |
當一個實體即將被上下文追蹤時觸發的事件,無論是因為它從追蹤查詢回傳,或是因為它被附加或新增到上下文中。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IInfrastructure<IStateManager>.Instance |
已淘汰.
取得內部狀態管理器,用來儲存被追蹤實體的資訊。 此特性是為擴展方法所設計的。 它並非用於應用程式程式碼中。 |
| IResettableService.ResetState() |
重置服務,讓它能從池中使用。 |
| IResettableService.ResetStateAsync(CancellationToken) |
提供存取變更追蹤資訊及相關情境所追蹤實體實例的操作。 這個類別的實例通常是從 ChangeTracker 應用程式中取得,且並非設計成直接在應用程式程式碼中建構。 |
擴充方法
| 名稱 | Description |
|---|---|
| GetInfrastructure<T>(IInfrastructure<T>) |
從一個被隱藏的屬性中取得價值 IInfrastructure<T>。 此方法通常由資料庫提供者(及其他擴充)使用。 它通常不被用於應用程式程式碼中。 |
| ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32) |
建立給定元資料的可讀表示法。 警告:請勿依賴回傳字串的格式。 它僅設計用於除錯,且可能在不同版本間任意變動。 |