0

私は 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);
4

0 に答える 0