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を呼び出すと、変更されたプロパティのみがデータ ソースに保持されます。