-1

我看到这个How to include a child object's child object in Entity Framework 5如何包括子对象的子对象的实体框架5不工作

不过,我使用MVC 5和似乎并不奏效。

我有一个典型的比赛,游戏,团队结构,并试图包括队伍,当我查询比赛。

我试图运行

db.Tournaments.Include(t => t.Games.Select(g => g.Team1)).ToList(); 

但是TEAM1是回来了空。这里是我的课程:

public class Tournament 
{ 
    public int TournamentId { get; set; } 
    public string Name { get; set; } 
    public virtual List<Game> Games { get; set; } 
    public virtual List<Standing> Standings { get; set; } 
} 

public class Game 
{ 
    public int GameId { get; set; } 
    public Location Location { get; set; } 
    public int LocationId { get; set; } 
    public virtual Team Team1 { get; set; } 
    public int Team1Id { get; set; } 
    public virtual Team Team2 { get; set; } 
    public int Team2Id { get; set; } 
    public int Team1Score { get; set; } 
    public int Team2Score { get; set; } 
    public DateTime Time { get; set; } 
    public Tournament Tournament { get; set; } 
    public int TournamentId { get; set; } 
} 

public class Team 
{ 
    public int TeamId { get; set; } 
    public string Name { get; set; } 
    public string Coach { get; set; } 
} 

有没有人有任何建议?

回答

0

您正在尝试从Db中的Games表中加载单个单元格,我不认为您可以按照您尝试的方式执行此操作。

将导航属性设置为虚拟,因此当您调用所需的属性时,应该自动延迟加载。不需要include语句。

所有你通常需要做的就是在比赛

var Tournaments = Db.Tournaments.ToList(); 

     foreach (var game in Tournaments.Games) 
     { 
      game.Team1.TeamId; 
      game.Team1.Coach; 
      game.Team1.Name; 
     } 
0
db.Tournaments.Include(t => t.Games.Team1).ToList(); 

这是包括EF5独生子女实体的正确方式,通过游戏列表进行迭代。