我有以下使用 EF 5 代码优先的简化类,其中我的 B 类有多个 FK 指向 A 类。
public class A
{
public int Id {get;set;}
ICollection<B> Bs {get;set;}
}
public class B
{
public int Id {get;set;}
public int A1Id {get;set;}
public int A2Id {get;set;}
public int A3Id {get;set;}
[ForeignKey("A1Id")]
public A A1 {get;set;}
[ForeignKey("A2Id")]
public A A2 {get;set;}
[ForeignKey("A3Id")]
public A A3 {get;set;}
}
当我尝试构建我的表时,我收到此错误: 在表“B”上引入 FOREIGN KEY 约束“FK_dbo.B_dbo.A_A1Id”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束。请参阅以前的错误。
我尝试通过 EntityTypeConfiguration 修改级联规则:
HasOptional(x => x.A1)
.WithMany()
.HasForeignKey(p => p.A1Id)
.WillCascadeOnDelete(false);
也试过这个:
HasOptional(x => x.A1)
.WithMany()
.Map(y => y.MapKey("A1Id"))
.WillCascadeOnDelete(false);
遵循此建议:多个外键到同一个主键表
但仍然得到同样的错误。我所有的 A1、A2 和 A3 FK 都是可选的。
有关如何解决此错误的任何想法?
谢谢!