2016-07-13 9 views
2

カスケード削除を使用する多数の外部キー関係を持つSQLデータベースに多数のテーブルがあります。既存の関係にカスケード削除が必要であると判断しました。これを有効にしようとすると、有用なメッセージ与えます:新しいカスケード削除の追加を禁止するCASCADE DELETEパスを決定する

Unable to create relationship Introducing FOREIGN KEY constraint on table may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors. 

しかし、それは循環関係の作成を引き起こすテーブルのセットを介して他のパスを言及していないが、それは単純に言って、問題をかわし:

modify other FOREIGN KEY constraints 

私たちは、モデル最初に作業しているとEntity Frameworkの中に変更を加える必要はありません。

関連する競合する外部キーの関係を確認するにはどうすればよいですか。

+0

手動で削除トリガーにカスケード削除を実装することは、おそらく回避策になります。サイクリックであれば、誰が気にするのか、最終的にはデータベースにデータがなくなってしまいます。しかし、周期が深すぎると遅くなることがあります。 – AXMIM

+0

私はトリガのパフォーマンスヒットに苦しむ必要はありません。巡回関係に寄与する外部キーを決定する必要があるので、問題を回避するために確定的に調整することができます。 –

答えて

0

これは何も処理していません。エンティティ・リレーションシップ(ER)ダイアグラムに似た何かをあなたがどこかに持っていることを前提としています。これにより、新規参入者は外来キーの関係を瞬時に把握することができます。

あなたが言うように、あなたが既に(明らかに)何かを構築した後に、あなたは「馬の途中で馬を切り替える」必要があるとは思わないでしょう。 (それはCREATE TABLEが私に言うところです:あなたは何かを組み込みます)

+0

DBテーブルの非常に小さなサブセットですが、私たちはER図を持っています。 edmxファイルを介してナビゲーションプロパティを追加すると、どのようなナビゲーションプロパティが表示され、そのテーブルが巡回関係の理由であるかがわかりますか?それはこの質問が関連する重要な情報です。 –

関連する問題