【问题标题】:How to include a child object's child object in Entity Framework 5 Not working如何在实体框架 5 中包含子对象的子对象不起作用
【发布时间】:2017-03-09 16:44:09
【问题描述】:

我看到了这个How to include a child object's child object in Entity Framework 5

但是,我使用的是 MVC 5,但这似乎不起作用。

我有一个典型的锦标赛、游戏、团队结构,并在我查询锦标赛时尝试包括团队。

我正在尝试运行

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

但是 Team1 将返回 null。这是我的课程:

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; }
}

有人有什么建议吗?

【问题讨论】:

    标签: asp.net-mvc entity-framework asp.net-mvc-5 entity-framework-6 entity


    【解决方案1】:

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

    您已将 Navigation 属性设置为 Virtual,因此您应该在调用所需属性时自动延迟加载。不需要包含语句。

    您通常需要做的就是遍历锦标赛中的游戏列表

        var Tournaments = Db.Tournaments.ToList();
    
            foreach (var game in Tournaments.Games)
            {
                game.Team1.TeamId;
                game.Team1.Coach;
                game.Team1.Name;
            }
    

    【讨论】:

      【解决方案2】:
      db.Tournaments.Include(t => t.Games.Team1).ToList();
      

      这是在 EF5 中包含单个子实体的正确方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-08
        • 1970-01-01
        相关资源
        最近更新 更多