こんにちは、breezejs を使用しているときにカスケード削除に問題があります。具体的には、AngularJS と BreezeJS (1.3.1 バージョン) で Asp.net Mvc SPA テンプレートを使用します。Phone オブジェクトのナビゲーション プロパティを持つ Customer オブジェクトがあります。電話には、NotNull およびカスケード削除に設定された Customer への FK があります。
私の問題は、クライアントで親 Customer を削除して SaveChanges (これは Web Api メソッドです) を呼び出そうとすると、SqlServer で DbUpdateException が発生することです。
私は電話を明示的に編集していませんが、breezejs クライアントは、削除済みとしてマークされた顧客オブジェクトと変更済みとしてマークされた電話オブジェクトを送り返していることがわかります。
どうやら Phone の FK を nullable に設定すると、例外はありません。親の Customer オブジェクトは削除されますが、Phone オブジェクトは削除されず、代わりに Customer への FK が null に設定されます。
Phone オブジェクトも削除したいのですが、FK 列は notnull のままにしておきます。助けていただければ幸いです。
編集の更新:
問題は、クライアントで EntityManager.saveChanges() を呼び出すときだと思います。Customer 親オブジェクトを削除すると、その entityState は削除済みに設定され、すべての FK 参照は、現在 EnityState が "Modified" になっている Phone オブジェクトのように null に設定されます。ただし、EntityManager.saveChanges() を呼び出すと、サーバーで更新と削除が発生し、電話の FK が「Not Null」に設定されているという競合が発生します。EntityManager.saveChanges([Customer]) を呼び出すとうまくいく場合があります。
#
ありがとうございました。