问题描述
所以我有一个简单的多对多关系,如下所示,并且我手动在外键部分添加了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 (将#修改为@)