EF Core外键配置问题Code First Problem

EF Core Foreign Key configuration problem Code First Problem

我在应用程序中有 4 table。

当我尝试添加迁移时出现以下错误:

The relationship from 'Team_Players.Team' to 'Team' with foreign key properties {'Team_Id' : string} cannot target the primary key {'Team_Id' : string, 'Club_Id' : string} because it is not compatible. Configure a principal key or a set of compatible foreign key properties for this relationship.

非常感谢您的帮助。

这是 类 的代码:

public class Club : BaseModel
{
        [Display(Name = "ID")]
        [Required]
        [Key]
        public string Club_id { get; set; }
}

public class Team : BaseModel
{
        [Display(Name = "ID")]
        [Required]
        public string Team_Id { get; set; }

        [ForeignKey("Club_Id")]
        public Club Club { get; set; }

        [Required]
        [Display(Name = "Club")]
        [MaxLength(50, ErrorMessage = "Field cannot be more than 50 Characters")]
        public string Club_Id  { get; set; }
}    

public class Player : BaseModel
{
        [Required]
        [Display(Name = "ID")]
        public string UserId { get; set; }
     
        [ForeignKey("Club_Id")]
        public Team Club { get; set; }

        [Required]
        [Display(Name = "Club ID")]
        [MaxLength(50, ErrorMessage = "Field cannot be more than 50 Characters")]
        public string Club_Id { get; set; }
}

public class Team_Players:BaseModel
{
        [Required]
        [Display(Name = "ID")]
        public string UserId { get; set; }

        [ForeignKey("Club_Id")]
        public Club Club { get; set; }

        [Display(Name = "Club ID")]
        [MaxLength(50, ErrorMessage = "Field cannot be more than 50 Characters")]
        public string Club_Id { get; set; }

        [ForeignKey("Team_Id")]
        public Team Team { get; set; }
        [Display(Name = "Team ID")]
        public string Team_Id { get; set; }
}

最后我的 OnModelCreating 方法有以下代码:

modelBuilder.Entity<Team>()
                .HasKey(e => new { e.Team_Id, e.Club_Id});

modelBuilder.Entity<Coach>()
                .HasKey(e => new { e.UserId, e.Club_Id });

modelBuilder.Entity<Player>()
               .HasKey(e => new { e.UserId, e.Club_Id });

modelBuilder.Entity<Team_Players>()
               .HasKey(e => new { e.UserId, e.Club_Id ,e.Team_Id});

外键以键为目标,而不仅仅是键的一部分。所以

[ForeignKey("Team_Id")]
public Team Team { get; set; }

应该是

[ForeignKey("Team_Id, Club_Id")]
public Team Team { get; set; }

因为

Entity<Team>().HasKey(e => new { e.Team_Id, e.Club_Id});