我正在创建幻想足球比赛,并且正在使用Entity Framework映射数据库。

有一个表,其中包含所有可能的足球运动员,称为Players,该表包含称为Teams的球队信息,该表包含联赛信息,并且该表跟踪哪个球员属于哪个球队(因为一个球员可以属于许多球队,具体取决于他们所在的联赛)称为联赛球员。

但是,当我尝试从团队中获取所有球员时,我遇到了一个问题。当我从上下文查询时,玩家显示为空,而如果我查看ID并在数据库中,则所有信息都在那里。有谁知道是什么原因造成的?我的模型设置不正确吗?

询问

    public async Task<IActionResult> getTeamPlayers(){
        // Null values
        var y = await context.Teams.Include(s => s.Players)
            .SingleOrDefaultAsync(t => t.ManagerID == manager.ManagerID);
        // Also null values
        var z = await context.Leagues.Include(l => l.Teams)
            .ThenInclude(t => t.Players)
            .AsNoTracking()
            .ToListAsync();

        return Json(y);
    }


除错

c# - 显示空类型的数据-LMLPHP
c# - 显示空类型的数据-LMLPHP

楷模

public class Team{
    [Key]
    public int TeamID { get; set; }
    public int ManagerID { get; set; }
    public int LeagueID { get; set; }
    public string TeamName { get; set; }
    public virtual Manager Manager { get; set; }
    public virtual League League { get; set; }
    public virtual ICollection<LeaguePlayer> Players { get; set; }

}

public class Player {
    [Key]
    public int PlayerID { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string Postion { get; set; }
}

public class LeaguePlayer{
    [Key]
    public int LeaguePlayerID { get; set; }
    [ForeignKey("Player")]
    public int PlayerID { get; set; }
    [ForeignKey("Team")]
    public int TeamID { get; set; }
    [ForeignKey("League")]
    public int LeagueID { get; set; }
    public virtual Player Player { get; set; }
    public virtual Team Team { get; set; }
    public virtual League League { get; set; }

}
public class League{
    [Key]
    public int LeagueID { get; set; }
    public int CommissionerID { get; set; }
    public string LeagueName { get; set; }
    [ForeignKey("CommissionerID")]
    public virtual Manager Commisoner {get; set;}
    public virtual ICollection<Team> Teams { get; set; }

}

最佳答案

我认为这是您想要的:

c# - 显示空类型的数据-LMLPHP

但是在这里我看到了:

c# - 显示空类型的数据-LMLPHP

球员属于团队还是联赛?如果两者都比您想像的要复杂,它将是三对多

好吧,在确切地知道您想要什么之后,最终将有2个“多对多”和一个“一对多”

c# - 显示空类型的数据-LMLPHP

和!您将手动验证一个球员不在同一联盟的2个不同团队中。

因此,在这里建立2个联结表,将很难理解,但是如果您想要在其他联赛中不会出现的联赛中的“自由球员”,那是唯一的选择

10-06 16:19
查看更多