MergeOption 列挙型
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オブジェクト コンテキストに読み込まれるオブジェクトを、オブジェクト コンテキストに既に存在するオブジェクトとマージする方法を指定します。
public enum class MergeOption
public enum MergeOption
type MergeOption =
Public Enum MergeOption
- 継承
フィールド
| 名前 | 値 | 説明 |
|---|---|---|
| AppendOnly | 0 | オブジェクト コンテキストに存在しないオブジェクトは、コンテキストにアタッチされます。 オブジェクトが既にコンテキスト内にある場合、エントリ内のオブジェクトのプロパティの現在の値と元の値は、データ ソース値で上書きされません。 オブジェクトのエントリの状態と、エントリ内のオブジェクトのプロパティの状態は変更されません。 AppendOnly は既定のマージ オプションです。 |
| OverwriteChanges | 1 | オブジェクト コンテキストに存在しないオブジェクトは、コンテキストにアタッチされます。 オブジェクトが既にコンテキスト内にある場合、エントリ内のオブジェクトのプロパティの現在の値と元の値は、データ ソース値で上書きされます。 オブジェクトのエントリの状態は Unchanged に設定され、プロパティは変更済みとしてマークされません。 |
| PreserveChanges | 2 | オブジェクト コンテキストに存在しないオブジェクトは、コンテキストにアタッチされます。 |
| NoTracking | 3 | オブジェクトは Detached 状態で保持され、 ObjectStateManagerでは追跡されません。 ただし、Entity Framework によって生成されたエンティティとプロキシを持つ POCO エンティティは、関連オブジェクトの読み込みを容易にするためにオブジェクト コンテキストへの参照を維持します。 |
注釈
Entity Framework では、キャッシュ内の特定のエンティティ キーを持つオブジェクトの 1 つのインスタンスのみが保持されます。 EntityKey オブジェクトは、オブジェクトの ID を表す不変オブジェクトです。 エンティティ キーは、オブジェクト コンテキストで ID 解決を実行するために使用されます。 詳細については、「 エンティティ キーの操作」を参照してください。 同じ ID を持つエンティティが既に追跡されている場合、データ ソースからのデータと、状態マネージャーに既に存在するデータは、クエリの MergeOption に従ってマージされます。
追加情報 MergeOption.PreserveChanges
エンティティの状態が EntityState.Unchanged場合、エントリの現在の値と元の値はデータ ソース値で上書きされます。 エンティティの状態は EntityState.Unchanged のままであり、プロパティは変更済みとしてマークされません。
エンティティの状態が EntityState.Modifiedされている場合、変更されたプロパティの現在の値はデータ ソース値で上書きされません。 変更されていないプロパティの元の値は、データ ソースの値で上書きされます。
.NET Framework 4 では、Entity Framework は変更されていないプロパティの現在の値と、データ ソースから返された値を比較します。 値が同じでない場合、プロパティは変更済みとしてマークされます。
ObjectContext.SaveChangesを呼び出すと、変更されたプロパティのみがデータ ソースに保持されます。