且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

实体框架核心:如何解决?引入外键约束可能会导致循环或多个级联路径

更新时间:2023-02-03 08:25:00

OnModelCreating 的示例代码中,您声明了 modelBuilder.Entity< AnEventUser>()。HasOne(e => e.User)... 两次:在方法开头和结尾。

In your sample code in OnModelCreating you have declared modelBuilder.Entity<AnEventUser>().HasOne(e => e.User)... twice: at start of method and at end.

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<AnEventUser>()       // THIS IS FIRST
        .HasOne(u => u.User).WithMany(u => u.AnEventUsers).IsRequired().OnDelete(DeleteBehavior.Restrict);


    modelBuilder.Entity<AnEventUser>()
        .HasKey(t => new { t.AnEventId, t.UserId });

    modelBuilder.Entity<AnEventUser>()
        .HasOne(pt => pt.AnEvent)
        .WithMany(p => p.AnEventUsers)
        .HasForeignKey(pt => pt.AnEventId);

    modelBuilder.Entity<AnEventUser>()       // THIS IS SECOND.
        .HasOne(eu => eu.User)               // THIS LINES
        .WithMany(e => e.AnEventUsers)       //   SHOULD BE
        .HasForeignKey(eu => eu.UserId);     //   REMOVED

}

第二个呼叫优先。删除它。

Second call overrides first. Remove it.