C# 如何允许表中的多个FK在删除时级联?
我不确定标题是否正确,因为我不确定我的诊断是否可靠。请随意评论 使用Fluent API声明表时,如下所示: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 =>
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,也就是四个八。美好的