0

我正在使用 EF 6 在 MS SQL Server 上开发数据库-代码优先我有这样的架构:广告|消息|附件

在哪里

广告有很多消息广告有很多附件

消息有很多附件

附件表有 2 个 FK,一个用于广告,一个用于消息。Messages 表对 Ads 有 1FK。

我想创建级联规则,当我删除广告时,它会删除该广告的所有消息及其附件(消息附件)和广告的附件,但到目前为止我失败了。

我明白了

在表“附件”上引入 FOREIGN KEY 约束“FK_dbo.Attachments_dbo.Messages_MessageId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

无法创建约束或索引。请参阅以前的错误。

模型构建器代码如下

        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