【问题标题】:EF core code first configuring relationships [closed]EF核心代码首先配置关系[关闭]
【发布时间】:2018-04-18 10:01:18
【问题描述】:

我正在尝试设置比赛。

我有以下型号:

public class Player
{
    [Required]
    public Guid PlayerId { get; set; }

    [Required]
    public string Firstname { get; set; }

    [Required]
    public string Lastname { get; set; }
}

public class Team
{
    [Required]
    public Guid TeamId { get; set; }

    [Required]
    public string TeamName { get; set; }

    [Required]
    [MaxLength(2)]
    [ForeignKey("TeamPlayerFK")]
    public List<Player> PlayersList { get; set; }
}

public class Match
{
    [Required]
    public Guid MatchId { get; set; }

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

    [ForeignKey("MatchPlayerFK")]
    public Player Player { get; set; }

    [Required]
    public DateTime MatchDateTime { get; set; }

    public int? Points { get; set; }
}

进行此设置后,玩家只能加入一个团队。它应该能够加入多个团队。有人可以帮助我朝着正确的方向前进吗?

【问题讨论】:

标签: entity-framework ef-code-first


【解决方案1】:

这是我在@GertArnold 的帮助下找到的答案:

public class Player
{
    [Required]
    public Guid PlayerId { get; set; }

    [Required]
    public string Firstname { get; set; }

    [Required]
    public string Lastname { get; set; }

    public virtual ICollection<TeamPlayer> TeamPlayers { get; set; }

    public virtual ICollection<Match> Matches { get; set; }
}
public class Team
{
    [Required]
    public Guid TeamId { get; set; }

    [Required]
    public string TeamName { get; set; }

    [Required]
    public virtual ICollection<TeamPlayer> TeamPlayers { get; set; }
}
public class TeamPlayer
{
    public Guid TeamPlayerId { get; set; }

    public Guid TeamId { get; set; }
    public Team Team { get; set; }

    public Guid PlayerId { get; set; }
    public Player Player { get; set; }
}
public class Match
{
    [Required]
    public Guid MatchId { get; set; }

    public Guid TeamId { get; set; }
    public Team Team { get; set; }

    public Guid PlayerId { get; set; }
    public Player Player { get; set; }

    [Required]
    public DateTime MatchDateTime { get; set; }

    public int? Points { get; set; }
}

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TeamPlayer>()
            .HasOne(tp => tp.Team)
            .WithMany(t => t.TeamPlayers)
            .HasForeignKey(tp => tp.TeamId);

        modelBuilder.Entity<TeamPlayer>()
            .HasOne(tp => tp.Player)
            .WithMany(p => p.TeamPlayers)
            .HasForeignKey(tp => tp.PlayerId);

        base.OnModelCreating(modelBuilder);
    }

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 2019-12-06
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多