我不确定标题是否正确,因为我不确定我的诊断是否可靠。随意评论。
使用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中,用户可以非常清楚地解释问题(它完全适用于我的情况)。但是,禁用事物所依赖的那两个级联的级联是我想要避免的。如果删除任何,我希望将其删除。