MergeOption 列挙型

定義

オブジェクト コンテキストに読み込まれているオブジェクトを、オブジェクト コンテキストに既に存在するオブジェクトにマージする方法を指定します。Specifies how objects being loaded into the object context are merged with objects already in the object context.

public enum class MergeOption
public enum MergeOption
type MergeOption = 
Public Enum MergeOption
継承
MergeOption

フィールド

AppendOnly 0

オブジェクト コンテキストに存在しないオブジェクトは、コンテキストにアタッチされます。Objects that do not exist in the object context are attached to the context. オブジェクトが既にコンテキストに存在する場合、エントリに格納されているオブジェクトのプロパティの現在の値と元の値が、データ ソースの値で上書きされることはありません。If an object is already in the context, the current and original values of object's properties in the entry are not overwritten with data source values. オブジェクトのエントリの状態と、エントリ内にあるオブジェクトのプロパティの状態は変化しません。The state of the object's entry and state of properties of the object in the entry do not change. AppendOnly は既定のマージ オプションです。AppendOnly is the default merge option.

NoTracking 3

オブジェクトは、Detached 状態で保持され、ObjectStateManager では追跡されません。Objects are maintained in a Detached state and are not tracked in the ObjectStateManager. ただし、Entity FrameworkEntity Framework によって生成されたエンティティと、プロキシを使用する POCO プロキシは、関連するオブジェクトの読み込みを容易にするためにオブジェクト コンテキストに対する参照を保持します。However, Entity FrameworkEntity Framework-generated entities and POCO entities with proxies maintain a reference to the object context to facilitate loading of related objects.

OverwriteChanges 1

オブジェクト コンテキストに存在しないオブジェクトは、コンテキストにアタッチされます。Objects that do not exist in the object context are attached to the context. オブジェクトが既にコンテキストに存在する場合、エントリに格納されているオブジェクトのプロパティの現在の値と元の値が、データ ソースの値で上書きされます。If an object is already in the context, the current and original values of object's properties in the entry are overwritten with data source values. オブジェクトのエントリの状態は Unchanged に設定され、いずれのプロパティも変更済みとしてマークされません。The state of the object's entry is set to Unchanged, no properties are marked as modified.

PreserveChanges 2

オブジェクト コンテキストに存在しないオブジェクトは、コンテキストにアタッチされます。Objects that do not exist in the object context are attached to the context.

注釈

Entity Framework は、キャッシュ内の特定のエンティティキーを持つオブジェクトの単一のインスタンスのみを保持します。The Entity Framework only maintains a single instance of an object with a specific entity key in the cache. オブジェクトEntityKeyは、オブジェクトの id を表す不変のオブジェクトです。The EntityKey objects are immutable objects that represent object's identity. エンティティ キーは、オブジェクト コンテキスト内の ID 解決を実行するために使用されます。Entity keys are used to perform identity resolution in the object context. 詳細については、「エンティティキーの操作」を参照してください。For more information, see Working with Entity Keys. 同じ id を持つエンティティが既に追跡されている場合、データソースからのデータと状態マネージャーに既に存在するデータは、クエリMergeOptionのに従ってマージされます。If an entity with the same identity is already being tracked, the data coming from the data source and the data already in the state manager are merged according to the MergeOption of the query.

追加情報MergeOption.PreserveChangesAdditional information on MergeOption.PreserveChanges

エンティティの状態が EntityState.Unchanged の場合、エントリに格納されている現在の値と元の値が、データ ソースの値で上書きされます。If the state of the entity is EntityState.Unchanged, the current and original values in the entry are overwritten with data source values. エントリの状態は EntityState.Unchanged のままとなり、いずれのプロパティも変更済みとしてマークされません。The state of the entity remains EntityState.Unchanged and no properties are marked as modified.

エンティティの状態が EntityState.Modified の場合、変更されているプロパティの現在の値は、データ ソースの値で上書きされません。If the state of the entity is EntityState.Modified, the current values of modified properties are not overwritten with data source values. 変更されていないプロパティの元の値は、データ ソースからの値で上書きされます。The original values of unmodified properties are overwritten with the values from the data source.

.NET Framework 4 では、Entity Framework は変更されていないプロパティの現在の値と、データソースから返された値を比較します。In .NET Framework 4, the Entity Framework compares the current values of unmodified properties with the values that were returned from the data source. 両者の値が異なる場合、プロパティは変更済みとしてマークされます。If the values are not the same, the property is marked as modified.

.NET Framework 3.5 SP1 では、データソースの値が異なる場合でも、Entity Framework はプロパティを変更済みとしてマークしません。In .NET Framework 3.5 SP1, the Entity Framework does not mark the property as modified even if the value in the data source is different.

変更されているプロパティだけが、ObjectContext.SaveChanges を呼び出したときにデータ ソースに永続化されます。Only modified properties are persisted to the data source when you call ObjectContext.SaveChanges.

.NET Framework 3.5 SP1 の動作を維持するにObjectContextOptions.UseLegacyPreserveChangesBehaviortrue、をに設定します。To preserve the .NET Framework 3.5 SP1 behavior, set ObjectContextOptions.UseLegacyPreserveChangesBehavior to true. PreserveChanges オプションは、ローカル コンテキストで変更を保持しながら、オプティミスティック コンカレンシー例外を解決するために使用できます。The PreserveChanges option can be used to resolve optimistic concurrency exceptions while preserving changes in the local context. 詳細については、「変更の保存と同時実行制御の管理」を参照してください。For more information, see Saving Changes and Managing Concurrency.

適用対象