[Entity Framework] Entity の状態(エンティティの状態)

Pocket

Entity Framework に限らず、O/R マッパーを使用して開発する場合は、Entity の状態を意識しておく必要がある。

(1) Entity の状態

  • Unchanged 状態

Entity が Context によってトラッキングされおり、かつデータベースにデータが存在し、値が変更されていない状態。SaveChanges() は使用できない。Unchanged状態で SaveChanges() を実行しても、データベースのデータは何も変更されない。

  • Added 状態

Entity は Context にトラッキングされているが、まだデータベースにデータが存在していない状態。SaveChanges() を実行すると、データベースにデータを挿入し、Unchanged 状態になる。

  • Modified 状態

Entity が Context によってトラッキングされおり、かつデータベースにデータは存在しているが、オブジェクトのプロパティの値が一部またはすべてが変更されている状態。SaveChanges() を実行すると、データベースのデータを更新し、Unchanged 状態になる。

  • Deleted 状態

Entity は Context によってトラッキングされ、データベースにデータは存在しており、削除対象としてマークされた状態。SaveChanges() を実行すると、削除された Entity はデータベースから削除され、 Context から切り離され、Detached 状態になる。

  • Detached 状態

オブジェクトのインスタンスは存在しているが、Entity が Context によってトラッキングされていない状態。

Entity の状態

(2) 参考サイト

「Working with entity states」
https://docs.microsoft.com/ja-jp/ef/ef6/saving/change-tracking/entity-state

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です