1

SQLカスケード削除にはかなり新しい。子供に関しては、カスケード削除がどのように機能するのか疑問に思っていました。たとえば、次のようなテーブル状況があるとします。

ParentTable ==カスケード==> ChildTable ==NoCascade==> GrandChildTable

孫も削除されますか?カスケード削除をオフにするには、子テーブルで指定する必要がありますか? Fluent API を使用して、WillCascadeOnDelete(true) で親の ParentTable のカスケード削除を ChildTable に設定しています。ChildTable に WillCascadeOnDelete(false) を設定する必要がありますか? GrandChildTable を削除できないのは、ドメイン テーブルであるためです。

ありがとう、マット

4

1 に答える 1

2

孫も削除されますか?

いいえ、データベース システムに完全なバグがない場合や、完全に実装されていない場合 (これはエンティティ フレームワークとはあまり関係ありません) は違います。それが可能であれば、これらの外部キー制約の意図に反してデータの整合性を簡単に破壊できます。

子が削除されたときに孫も削除する場合は、ChildTable から GrandChildTable への FK リレーションに追加の DELETE CASCADE 制約が必要です。子に対する DELETE 操作が、その子に対する明示的な DELETE によるものか、親に対するカスケード削除によるものかは問題ではありません。

于 2013-04-15T14:10:56.477 に答える