问题 我的Core MVC应用程序中有两个实体。 BolgeToBolge实体中有两个Bolge ID。其中一个是FromBolgeFk,另一个是ToBolgeFk。 在Visual Studio 2019的程序包管理器控制台中执行“更新数据库”命令后,出现如下错误: “在表'BolgeToBolge'上引入FOREIGN KEY约束'FK_BolgeToBolge_Bolge_ToBolgeFk'可能会导致循环或多个级联路径。请指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束或索引。查看以前的错误。
我的代码:
Bolge.cs实体模型:
public class Bolge
{
[Key]
public int Id { get; set; }
[Display(Name ="Bölge")]
[StringLength(100)]
[Required]
public string BolgeAd { get; set; }
[ForeignKey("Ilce")]
public int IlceFk { get; set; }
public virtual Ilce Ilce { get; set; }
public virtual ICollection<BolgeToBolge> BolgeToBolgeFroms { get; set; }
public virtual ICollection<BolgeToBolge> BolgeToBolgeToes { get; set; }
public virtual ICollection<Rezervasyon> RezervasyonsFrom { get; set; }
public virtual ICollection<Rezervasyon> RezervasyonsTo { get; set; }
}
BolgeToBolge实体:
public class BolgeToBolge
{
[Key]
public int Id { get; set; }
[ForeignKey("FromBolge")]
[InverseProperty("BolgeToBolgeFroms")]
public int FromBolgeFk { get; set; }
public virtual Bolge FromBolge { get; set; }
[ForeignKey("ToBolge")]
[InverseProperty("BolgeToBolgeToes")]
public int ToBolgeFk { get; set; }
public virtual Bolge ToBolge { get; set; }
}
ApplicationDbContext:DbContext
{
modelBuilder.Entity<BolgeToBolge>()
.HasKey(BtB=> new {BtB.FromBolgeFk, BtB.ToBolgeFk });
modelBuilder.Entity<BolgeToBolge>()
.HasOne(BtB => BtB.FromBolge)
.WithMany(BtB => BtB.BolgeToBolgeFroms)
.HasForeignKey(BtB => BtB.FromBolgeFk).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<BolgeToBolge>()
.HasOne(BtB => BtB.ToBolge)
.WithMany(BtB => BtB.BolgeToBolgeToes)
.HasForeignKey(BtB => BtB.ToBolgeFk).OnDelete(DeleteBehavior.Cascade);
}
如何解决问题。感谢您的帮助。
答案 0 :(得分:0)
modelBuilder.Entity<BolgeToBolge>()
.HasOne(BtB => BtB.ToBolge)
.WithMany(BtB => BtB.BolgeToBolgeToes)
.HasForeignKey(BtB => BtB.ToBolgeFk).OnDelete(DeleteBehavior.NoAction);