如何允许表中的多个FK在删除时级联?

时间:2016-04-09 20:43:22

标签: c# sql entity-framework foreign-keys ef-fluent-api

我不确定标题是否正确,因为我不确定我的诊断是否可靠。随意评论。

使用Fluent API声明表格时如下:

CreateTable("dbo.Things",
  c => new
  {
    Id = c.Guid(nullable: false, identity: true),
    UnoId = c.Guid(nullable: false),
    DuoId = c.Guid(nullable: false),
  })
  .PrimaryKey(t => t.Id)
  .ForeignKey("dbo.Unos", t => t.UnoId, cascadeDelete: true)
  .ForeignKey("dbo.Duos", t => t.DuoId, cascadeDelete: true)
  .Index(t => t.UnoId)
  .Index(t => t.DuoId);
}

当我尝试更新数据库时出现此错误消息。

  

在表'Things'上引入FOREIGN KEY约束'FK_dbo.Things_dbo.Duos_DuoId'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。   无法创建约束或索引。查看以前的错误。

我注意到,当我切换FK的分配顺序(让 Duos Unos 之前)时,我收到相同的错误消息但抱怨 Unos 而不是。

不完全确定为什么会发生这种情况,我感觉外键在设置为两个表时不会茁壮成长。但是,我不确定是否应该将级联设置为关闭,或者我是否应该更好地为FK集合执行更复杂的操作。

不完全确定计算机所担心的是什么,我想我希望删除时的级联保持有效。如果我删除该东西所依赖的 Uno Duo ,我希望这件事能够消失。

我该怎么做?或者我应该考虑其他方面吗?

this answer中,用户可以非常清楚地解释问题(它完全适用于我的情况)。但是,禁用事物所依赖的那两个级联的级联是我想要避免的。如果删除任何,我希望将其删除。

0 个答案:

没有答案