私は EF 6 を使用して MS SQL Server でデータベースを開発しています - Code First 私は次のようなスキーマを持っています: Ads|Messages|Attachments
どこ
広告には多くのメッセージがあります 広告には多くの添付ファイルがあります
メッセージには多くの添付ファイルがあります
Attachments テーブルには 2 つの FK があり、1 つは広告用、もう 1 つはメッセージ用です。Messages テーブルには、Ads への 1FK があります。
広告を削除すると、この広告のすべてのメッセージとその添付ファイル (メッセージ添付ファイル) および広告の添付ファイルが削除されるカスケード ルールを作成したいのですが、これまでのところ失敗しています。
私は得る
テーブル 'Attachments' に FOREIGN KEY 制約 'FK_dbo.Attachments_dbo.Messages_MessageId' を導入すると、サイクルまたは複数のカスケード パスが発生する可能性があります。ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更します。
制約またはインデックスを作成できませんでした。以前のエラーを参照してください。
ModelBuilder コードは次のとおりです。
modelBuilder.Entity<Attachments>()
.HasOptional(a => a.Advertisement)
.WithMany(a => a.Attachments)
.WillCascadeOnDelete(true);
modelBuilder.Entity<Attachments>()
.HasOptional(a => a.Message)
.WithMany(a => a.Attachments)
.WillCascadeOnDelete(true);
modelBuilder.Entity<Messages>()
.HasRequired(m => m.Advertisement)
.WithMany(u => u.Messages)
.WillCascadeOnDelete(true);