2012-03-10 12 views
5

したがって、2つのテーブル、請求書とInvoiceItemがあります。請求書を削除すると、関連するすべてのInvoiceItemも削除されます。Entity Frameworkのカスケード削除

請求書を削除するときにカスケード削除を実行するようにSQL Serverの関係を更新しました。エンティティフレームワークはその変更を認識しませんでしたが、カスケード削除を実行するためにEDMXを手動で更新する必要があることを読んだことがあります。

私EDMXのデザインビューでまあ

、私は2つのテーブル間のリレーションシップをクリックし、あなたが見ることができるように、ある

enter image description here

を削除し、私のカスケードを試してみて、設定するプロパティをチェックします2つのOnDeleteプロパティ:End1 OnDeleteとEnd2 OnDelete

どちらをカスケードに設定する必要がありますか?

答えて

5

End1が(私が請求書アイテムを持つ請求書)関係のプリンシパルである場合、削除をカスケードすることは意味があります。

7

私もこれについて最初に混乱していた、その理由は、私はそれがナビゲーションプロパティまたは終了が表さどのオブジェクト記述フィールド役割名フィールドであったかどうか何がわからないということだった、作りDevidigitalsの効果がないとの回答。

そして、その答えは、フィールドロール名によって終了が記述されています。

我々は問題の請求書が削除されるとき請求書のためにすべてのInvoiceItemsを削除したいことを知っているのであれば、我々は、おそらく我々が請求書ためOnDeleteを設定する必要があり、特定のを見つけることがことを知っています関係の請求書を表すend、ロール名が "請求書"の終わりを検索します。上記の例では、End1です。

知っていれば分かりますが、そうでない場合はそうではありません。

+0

あなたの投稿を編集して、上記のEnd2が役割名「請求書」であると言います。それは終わりではないはずですか? –

+0

@KyleWああ、もちろん、あなたは正しい。私に通知してくれてありがとう。 – Alex

関連する問題