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

C# 如何允许表中的多个FK在删除时级联?,c#,sql,entity-framework,foreign-keys,ef-fluent-api,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 =>

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

使用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”上引入外键约束“FK_dbo.Things_dbo.Duos_DuoId”可能会导致循环或多个级联路径。指定“在删除时不执行操作”或“在更新时不执行操作”,或修改其他外键约束。 无法创建约束或索引。请参阅前面的错误

我注意到,当我切换FK的分配顺序时(让DUO在Unos之前进行),我收到了相同的错误消息,但却抱怨Unos

由于不能完全确定为什么会发生这种情况,我感觉外键在设置为两个表时无法正常工作。但是,我不确定是否应该将“级联”设置为“关闭”,还是最好对FK集执行更复杂的操作

由于不能完全确定计算机在担心什么,我想我希望删除时的级联保持有效。如果我移除这个东西所依赖的Uno或Duo,我希望它消失

我该怎么做?还是应该考虑其他方面?


在中,用户非常清楚地解释了问题(这完全适用于我的情况)。但是,我希望避免为这两个东西中的任何一个禁用级联。如果其中任何一个被删除,我希望它被删除。

这是SQL Server的限制,你必须接受。您需要触发器来获得所需的行为。但是你绝对确定如果一个
Uno
被删除,一个
Duo
也会突然丢失一些,如果它的
东西
被删除,这是可以的吗?哦,这就是为什么。。。我对损失有把握。然而,我选择了最简单的方法,并关闭了最不可能首先删除的实体的级联。还有,你现在有一个神一样的名声-48888,也就是四个八。美好的