Mám 4 tabulky v aplikaci.
User
tabulka (z IdentityUser) -UserId
je PK- A
Club
tabulka: PK jeclub_id
. - A
Team
tabulka, která musí patřit doClub
. PK jeteam_id + club_id
. - Tabulka
Player
který je uživatel (PKUserID
). - Tabulka
Team_Players
které musí patřit do týmu: PK jeteam_id + club_id + UserId
.
Když se snažím přidat migrace jsem se následující chybová zpráva:
Vztah z 'Team_Players.Tým " na "Team' s je cizí klíč vlastnosti {'Team_Id' : string} nemůže cílové primární klíč {'Team_Id' : string, 'Club_Id' : string}, protože to není kompatibilní. Konfigurovat hlavní klíč nebo sada kompatibilní cizí klíč vlastnosti na tento vztah.
Děkuji moc předem za pomoc.
Zde je kód pro třídy:
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; }
}
A konečně můj OnModelCreating
metoda má následující kód:
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});