ホームページ > バックエンド開発 > C++ > Entity Framework: `EntityCollection.Remove()` と `ObjectContext.DeleteObject()` – どちらのメソッドを使用する必要がありますか?

Entity Framework: `EntityCollection.Remove()` と `ObjectContext.DeleteObject()` – どちらのメソッドを使用する必要がありますか?

Barbara Streisand
リリース: 2025-01-16 23:46:11
オリジナル
134 人が閲覧しました

Entity Framework: `EntityCollection.Remove()` vs. `ObjectContext.DeleteObject()` – Which Method Should I Use?

Entity Framework のエンティティ削除方法の比較

Entity Framework には、データベースから項目を削除するための 2 つの主なメソッド、EntityCollection.Remove()ObjectContext.DeleteObject() が用意されています。どちらもデータベースから項目を削除しますが、機能と使用法は異なります。

EntityCollection.Remove()

EntityCollection.Remove() 親エンティティと子エンティティ間の関係を削除します。このメソッドは、コンテキスト内で関係が削除済みとしてマークされます。子エンティティ自体が削除されている場合、SaveChanges が呼び出されたときに実行される正確なアクションは、関係の性質によって異なります。

  • オプションの関係: 親エンティティから子エンティティへの外部キーは null に設定され、更新された値は SQL UPDATE ステートメントを使用してデータベースに書き込まれます。
  • 必須の非識別関係: には、子エンティティを別の親エンティティに再割り当てするか、子エンティティで を呼び出すなど、追加のアクションが必要です。そうしないと、参照制約違反例外が発生します。 DeleteObject()
  • 必要な識別関係: 子エンティティも削除済みとしてマークされます。 を呼び出すと、SQL DELETE ステートメントがデータベースに送信され、参照制約に違反しない場合は子エンティティが削除されます。 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート