我正在使用 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);