ChangeTracker 類別

定義

針對內容正在追蹤的實體實例,提供變更追蹤資訊和作業的存取權。 這個類別的實例通常是從 ChangeTracker 取得的,而且不是設計成直接在應用程式程式碼中建構。

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
繼承
ChangeTracker
實作
IInfrastructure<Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IStateManager> IResettableService

備註

如需詳細資訊和範例,請參閱 EF Core 變更追蹤

建構函式

ChangeTracker(DbContext)

此 API 支援 Entity Framework Core 基礎結構,而且不適合直接從您的程式碼使用。 此 API 可能會在未來的版本中變更或移除。

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

這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。

ChangeTracker(IStateManager, IChangeDetector, IEntityEntryGraphIterator, DbContext)

此 API 支援 Entity Framework Core 基礎結構,而且不適合直接從您的程式碼使用。 此 API 可能會在未來的版本中變更或移除。

屬性

AutoDetectChangesEnabled

取得或設定值,指出 方法是否 DetectChanges() 由 和 相關類別的方法 DbContext 自動呼叫方法。

CascadeDeleteTiming

取得或設定值,指出當相依/子實體在其父/主體實體標示為 之後,其狀態會設定 DeletedDeleted 。 預設值為 Immediate

Context

取得此變更追蹤器所屬的內容。

DebugView

在偵錯工具中展開此屬性,以取得所追蹤實體的人類可讀取檢視。

警告:請勿依賴偵錯字串的格式。 它們僅供偵錯所設計,而且可能會在發行之間任意變更。

如需詳細資訊和範例,請參閱 EF Core 變更追蹤

DeleteOrphansTiming

取得或設定值,指出相依/子實體在透過導覽或外鍵屬性設定為 null 時,其狀態會設定 Deleted 為一次從父/主體實體中斷。 預設值是 Immediate

LazyLoadingEnabled

取得或設定值,指出追蹤實體的導覽屬性是否會在第一次存取時載入。

QueryTrackingBehavior

取得或設定針對內容執行的 LINQ 查詢追蹤行為。 停用變更追蹤對於唯讀案例很有用,因為它可避免為每個實體實例設定變更追蹤的額外負荷。 如果您想要操作實體實例,並使用 將那些變更保存到資料庫 SaveChanges() ,則不應該停用變更追蹤。

方法

AcceptAllChanges()

接受對內容中實體所做的所有變更。 假設追蹤的實體代表資料庫的目前狀態。 這個方法通常會在變更成功儲存至資料庫之後呼叫 SaveChanges()

CascadeChanges()

強制從必要的父/主體實體中中斷子/相依實體時立即刪除子/相依實體,或刪除必要的父/主體實體。 請參閱 DeleteBehavior

Clear()

停止追蹤所有目前追蹤的實體。

DetectChanges()

掃描追蹤的實體實例,以偵測對實例資料所做的任何變更。 DetectChanges() 在傳回變更追蹤資訊 () 之前 SaveChanges() 和傳回變更追蹤資訊時,通常會由內容自動呼叫。 如果您已 AutoDetectChangesEnabled 停用 ,您通常只需要呼叫這個方法。

如需詳細資訊和範例,請參閱 EF Core 變更追蹤

Entries()

EntityEntry 回內容所追蹤之每個實體的 。 專案可讓您存取每個實體的變更追蹤資訊和作業。

Entries<TEntity>()

EntityEntry取得內容所追蹤指定型別之所有實體的 。 專案可讓您存取每個實體的變更追蹤資訊和作業。

HasChanges()

檢查是否正在追蹤任何新的、已刪除或變更的實體,以便呼叫 或 SaveChangesAsync(CancellationToken) ,將這些變更傳送至資料庫 SaveChanges()

TrackGraph(Object, Action<EntityEntryGraphNode>)

藉由周遊實體導覽屬性,開始追蹤實體和可連線的任何實體。 周遊是遞迴的,因此也會掃描任何探索到實體的導覽屬性。 系統會針對每個探索到的實體呼叫指定的 callback ,而且必須設定 State 應該追蹤每個實體的 。 如果未設定狀態,實體會維持未追蹤狀態。

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

藉由周遊實體導覽屬性,開始追蹤實體和可連線的任何實體。 周遊是遞迴的,因此也會掃描任何探索到實體的導覽屬性。 系統會針對每個探索到的實體呼叫指定的 callback ,而且必須設定 State 應該追蹤每個實體的 。 如果未設定狀態,實體會維持未追蹤狀態。

這個方法的設計目的是在已中斷連線的案例中使用,其中實體是使用某個內容實例來擷取,然後使用內容的不同實例來儲存變更。 其中一個範例是 Web 服務,其中一個服務呼叫會從資料庫擷取實體,而另一個服務呼叫會保存實體的任何變更。 每個服務呼叫都會使用在呼叫完成時處置之內容的新實例。

圖形的周遊通常會在遇到已追蹤的實體或到達不應追蹤的實體時停止。 針對此一般行為,請使用 TrackGraph(Object, Action<EntityEntryGraphNode>) 多載。 另一方面,這個多載可讓回呼決定周遊何時結束,但 onus 則位於呼叫端,以確保周遊不會進入無限迴圈。

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

藉由周遊實體導覽屬性,開始追蹤實體和可連線的任何實體。 周遊是遞迴的,因此也會掃描任何探索到實體的導覽屬性。 系統會針對每個探索到的實體呼叫指定的 callback ,而且必須設定 State 應該追蹤每個實體的 。 如果未設定狀態,實體會維持未追蹤狀態。

事件

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

當實體即將由內容追蹤時引發事件,可能是因為它從追蹤查詢傳回,或是附加或新增至內容。

明確介面實作

IInfrastructure<IStateManager>.Instance
已過時。.

取得用來儲存所追蹤實體相關資訊的內部狀態管理員。

此屬性適用于擴充方法。 它不適合用于應用程式程式碼。

IResettableService.ResetState()

重設服務,使其可從集區使用。

IResettableService.ResetStateAsync(CancellationToken)

針對內容正在追蹤的實體實例,提供變更追蹤資訊和作業的存取權。 這個類別的實例通常是從 ChangeTracker 取得的,而且不是設計成直接在應用程式程式碼中建構。

擴充方法

ToDebugString(ChangeTracker, ChangeTrackerDebugStringOptions, Int32)

建立人類可讀取的指定中繼資料標記法。

警告:請勿依賴傳回字串的格式。 它是專為偵錯而設計,而且可能會在發行之間任意變更。

GetInfrastructure<T>(IInfrastructure<T>)

從使用 IInfrastructure<T> 隱藏的屬性取得值。

這個方法通常由資料庫提供者 (和其他延伸模組) 使用。 它通常不會用於應用程式程式碼。

適用於