0

私はEntity Frameworkを使用していますが、その機能の一部は私にとってはまだ不明です。理解しにくい主なものは次のとおりです。ObjectStateManagerとDetachedエンティティの状態

  • SubmitChangesプロセスです。
  • update-delete-insertメソッドを呼び出す順序。
  • の理解ObjectStateManager
  • デタッチされたEntityStateとそれはプロセスの提出の一部です。

説明を入力してください。

答えて

3

ObjectStateManagerは、追跡されるエンティティに関する情報を公開するコンポーネントです。 EFによって永続化できる各エンティティは、追跡する必要があります=添付されています。 DetachedエンティティはEFには不明です(追跡されていません)。SaveChanges(EFにはSubmitChangesはありません)を呼び出すと、その変更は保存されません。追跡は、エンティティまたはリレーションの初期状態に関する情報の維持と、それらに対する変更を行います。また、エンティティのグローバルな状態も含まれます。

SaveChangesを呼び出すときのプロセスは、変更を追跡するようにEFを設定する方法、エンティティを取得する方法、および行った変更によって異なります。

変更追跡は、コンテキストに添付されたエンティティ(クエリによって読み込まれた各エンティティはデフォルトで添付されています)に適用された変更を追跡する機能です。 EFには、変更追跡のバージョンが含まれています。

  • スナップショット - POCOのみです。 EFはエンティティへの変更を追跡しませんが、SaveChangesを呼び出すと、(エンティティがロードされたときに取得された)エンティティの保存状態とエンティティの現在のデータを比較し、それに応じて状態を設定します。
  • EntityObjectベースエンティティの動的ネイティブであり、POCOの動的プロキシによって実現されます。アタッチされたエンティティトリガに対する各変更は、追跡されたエントリ内で変化し、それに応じてエンティティ状態を設定する。 SaveChangesに電話すると、すでに設定されている状態になります。

データ変更操作の順序は、EF内部実装です。基本的な順序は、エンティティ間の依存関係が記述されているマッピングによって定義されます。

+0

ありがとうございます。 ObjectStateに関するもう1つの質問:新しい項目(追加されたばかり)が 'Detached'状態にあり、' Added'にない理由は何ですか? –

+0

新しいアイテムはどのように追加されますか? –

+0

'SomeEntityCollection.AddNew(SomeNewEntity);'そして 'DomainContext.SubmitChanges'です。より正確な説明が必要な場合は、私はそれを提供することができます。 –

関連する問題