如何解决级联的多对多自引用
所以我有一个简单的多对多关系,如下所示,并且我手动在外键部分添加了onUpdate: ReferantialAction.Cascade
,并在我用简单的{{1 }}我可以成功更新我的实体。
SqlCommand
DbContext
public class Machine
{
public string No { get; set; }
public string Name { get; set; }
public List<MachinePart> MachineParts { get; set; }
}
public class Part
{
public string No { get; set; }
public string Name { get set; }
public List<MachinePart> MachineParts { get; set; }
}
public class MachinePart
{
public string MachineNo { get; set; }
public Machine Machine { get; set; }
public string PartNo { get; set; }
public Part Part { get; set; }
}
迁移
builder.Entity<MachinePart>().HasKey(i => new { i.MachineNo,i.PartNo });
但是现在我必须创建一个多对多表自引用,它可以是级联关系,
migrationBuilder.AddForeignKey(
name: "FK_MachineParts_Machines_MachineNo",table: "MachineParts",column: "MachineNo",principalTable: "Machines",principalColumn: "No",onUpdate: ReferentialAction.Cascade,onDelete: ReferentialAction.Cascade);
当我手动添加时
public class MachineRelation
{
public string MachineNo { get; set; }
public Machine Machine { get; set; }
public string ReferencedMachineNo { get; set; }
public Machine ReferencedMachine { get; set; }
}
&&
onUpdate: ReferantialAction.Cascade
我得到级联异常=>
在表'AssemblyRevisions'上引入FOREIGN KEY约束'FK_AssemblyRevisions_Assemblies_RevisionedAssemblyNo'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。