我在應用程式中有 4 個表。
User表(來自 IdentityUser) -UserId是 PK- A
Club表:PK是club_id。 - 一個
Team必須屬于一個表Club。PK 正在team_id club_id。 Player一個用戶表(PKUserID)。- 一個表
Team_Players必須屬于一個團隊:PK是team_id club_id UserId。
當我嘗試添加遷移時,出現以下錯誤:
從 'Team_Players.Team' 到 'Team' 的外鍵屬性 {'Team_Id' : string} 的關系不能以主鍵 {'Team_Id' : string, 'Club_Id' : string} 為目標,因為它不兼容。為此關系配置一個主鍵或一組兼容的外鍵屬性。
非常感謝您的幫助。
這是類的代碼:
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});
uj5u.com熱心網友回復:
外鍵針對的是鍵,而不僅僅是鍵的一部分。所以
[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});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/364664.html
上一篇:DotnetEFCoreLinq字串包含在由逗號分隔的串列字串中
下一篇:物體框架在運行時創建多個表C#
