Entity Framework のエンティティ削除方法の比較
Entity Framework には、データベースから項目を削除するための 2 つの主なメソッド、EntityCollection.Remove()
と ObjectContext.DeleteObject()
が用意されています。どちらもデータベースから項目を削除しますが、機能と使用法は異なります。
EntityCollection.Remove()
EntityCollection.Remove()
親エンティティと子エンティティ間の関係を削除します。このメソッドは、コンテキスト内で関係が削除済みとしてマークされます。子エンティティ自体が削除されている場合、SaveChanges
が呼び出されたときに実行される正確なアクションは、関係の性質によって異なります。
DeleteObject()
SaveChanges
ObjectContext.DeleteObject()
コンテキスト内でエンティティを削除済みとしてマークします。これにより、エンティティの ObjectContext.DeleteObject()
が EntityState
に設定され、削除済みとしてマークされた関係はあっても、それ自体は削除されていない可能性がある他のエンティティと区別されます。 Deleted
を使用した後に DeleteObject()
を呼び出すと、参照制約に違反しない限り、SQL DELETE ステートメントがトリガーされ、データベースからエンティティが削除されます。 SaveChanges
戻り値
は関係が正常に削除されたかどうかを示すブール値を返すのに対し、EntityCollection.Remove()
は void を返すことに注意することが重要です。 ObjectContext.DeleteObject()
使用上の提案
どの方法を使用するかは、望ましい結果によって異なります。 は、子エンティティを削除せずに 2 つのエンティティ間の関係を削除することが目的の場合に適用されます。エンティティ自体を削除する場合、特に参照制約に違反する可能性がある場合は、EntityCollection.Remove()
を使用する必要があります。 ObjectContext.DeleteObject()
以上がEntity Framework: `EntityCollection.Remove()` と `ObjectContext.DeleteObject()` – どちらのメソッドを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。