web-dev-qa-db-ja.com

Entity FrameworkのWillCascadeOnDeleteはどのように機能しますか?

私が理解しているように、親行を削除した場合、削除時にカスケードをオンにすると、その子が削除されます。しかし、私のテストから、それはまったく機能していないようです。 WillCascaseOnDeleteをtrueまたはfalseに設定しても、子の外部キーがnullに設定されるだけです。これにより、外部キーをnullに設定する必要があるという別の問題が発生します。そうしないと、SaveChangeが例外をスローします。これは欠陥または望ましい動作ですか?

16
newman

これは、外部キー(子)がnull可能であるためです。デフォルトでは、親を削除するときに、関係の外部キーがnullに対応している場合、EFは親を削除し、外部キーをnullに設定します。外部キーがNULLでない場合、子を削除します(探している動作は?)。

このデフォルトの動作を変更できます ここ

10
Matt Cotton

SQL Serverの[外部キーの関係]ウィンドウで、[削除規則]として[カスケード]が選択されていることを確認します。

0
asr