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

親/プリンシパル エンティティが としてDeletedマークされると、依存/子エンティティの状態が にDeleted設定されるタイミングを示す値を取得または設定します。 既定値は です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()

または が呼び出された場合 SaveChanges() に、これらの変更がデータベースに送信されるように、新しいエンティティ、削除されたエンティティ、または SaveChangesAsync(CancellationToken) 変更されたエンティティが追跡されているかどうかを確認します。

TrackGraph(Object, Action<EntityEntryGraphNode>)

ナビゲーション プロパティを走査することで、エンティティと到達可能なエンティティの追跡を開始します。 トラバーサルは再帰的であるため、検出されたエンティティのナビゲーション プロパティもスキャンされます。 指定された callback は、検出された各エンティティに対して呼び出され、各エンティティを State 追跡する必要がある を設定する必要があります。 状態が設定されていない場合、エンティティは追跡されません。

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

ナビゲーション プロパティを走査することで、エンティティと到達可能なエンティティの追跡を開始します。 トラバーサルは再帰的であるため、検出されたエンティティのナビゲーション プロパティもスキャンされます。 指定された callback は、検出された各エンティティに対して呼び出され、各エンティティを State 追跡する必要がある を設定する必要があります。 状態が設定されていない場合、エンティティは追跡されません。

このメソッドは、コンテキストの 1 つのインスタンスを使用してエンティティが取得され、コンテキストの別のインスタンスを使用して変更が保存される、切断されたシナリオで使用するように設計されています。 この例は、あるサービス呼び出しがデータベースからエンティティを取得し、別のサービス呼び出しがエンティティに対する変更を保持する Web サービスです。 各サービス呼び出しでは、呼び出しが完了したときに破棄されるコンテキストの新しいインスタンスが使用されます。

通常、グラフのトラバーサルは、既に追跡されているエンティティが見つかった場合、または追跡すべきではないエンティティに到達するたびに停止する必要があります。 この一般的な動作では、 オーバーロードを使用します TrackGraph(Object, Action<EntityEntryGraphNode>) 。 一方、このオーバーロードを使用すると、コールバックはトラバーサルがいつ終了するかを決定できますが、トラバーサルが無限ループに入らないようにするため、onus は呼び出し元にあります。

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

ナビゲーション プロパティを走査することで、エンティティと到達可能なエンティティの追跡を開始します。 トラバーサルは再帰的であるため、検出されたエンティティのナビゲーション プロパティもスキャンされます。 指定された callback は、検出された各エンティティに対して呼び出され、各エンティティを State 追跡する必要がある を設定する必要があります。 状態が設定されていない場合、エンティティは追跡されません。

イベント

DetectedAllChanges

への明示的な呼び出しDetectChanges()を介してエンティティ グラフに対する変更が検出された場合に発生するイベント。実行中の一部や SaveChangesAsync(CancellationToken)など、自動的に 発生しますSaveChanges()

DetectedEntityChanges

または の明示的な呼び出しを介して、または の実行の一部や など、自動的に 1 つのエンティティに対してDetectChanges()DetectChanges()変更が検出されたときに発生するSaveChanges()SaveChangesAsync(CancellationToken)イベント。

DetectingAllChanges

の明示的な呼び出しDetectChanges()を通じて、エンティティ グラフの変更が発生しようとしていることを検出するときに発生するイベント。または、実行の一部や など、自動的に発生しますSaveChanges()SaveChangesAsync(CancellationToken)

DetectingEntityChanges

1 つのエンティティに対する変更を検出するときに発生するイベントは、 または への明示的な呼び出しDetectChanges()を介して、または の実行の一部や など、自動的に発生しようとしていますSaveChanges()SaveChangesAsync(CancellationToken)DetectChanges()

StateChanged

関連付けられた DbContext によって追跡されるエンティティが 1 つ 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>取得します。

このメソッドは、通常、データベース プロバイダー (およびその他の拡張機能) によって使用されます。 通常、アプリケーション コードでは使用されません。

適用対象