繁体   English   中英

实体框架6未加载导航属性(延迟加载)

[英]Entity Framework 6 not loading Navigation Properties (lazy Loading)

我试图加载以下数据库结构

用户-> UserTeamRelation->团队->游戏

在这种关系中,尝试访问“ user.Teams.Team”时,“ Team”已经为空。

我有以下数据库结构

public class User : IdentityUser
{
    public User()
    {
        this.Id = Guid.NewGuid().ToString();
    }

    public virtual ICollection<TeamMember> Teams { get; set; }
}

public class Team
{
    public Team()
    {
        this.Id = Guid.NewGuid().ToString();
    }

    [Key]
    public string Id { get; set; }

    public virtual ICollection<TeamMember> Memberinos { get; set; }

    [Required]
    public virtual Game Game { get; set; }
}

public class TeamMember
{
    public TeamMember()
    {
        this.Id = Guid.NewGuid().ToString();
    }

    [Key]
    public string Id { get; set; }

    public virtual Team Team { get; set; }

    public virtual User Member { get; set; }
}

public class Game
{
    public Game()
    {
        this.Id = Guid.NewGuid().ToString();
    }

    [Key]
    public string Id { get; set; }

    public string Name { get; set; }
}

我尝试了以下代码

using (var db = new ApplicationDbContext())
{
    var user = db.Users.FirstOrDefault(x => x.UserName.ToLower().Equals(username));
    if (user == null)
    {
        return new ResponseViewModel(false, "User nicht gefunden", null);
    }

    var teams = new List<Team>();
    foreach (var team in user.Teams)
    {
        teams.Add(new Team()
        {
            Description = team.Description,
            TeamName = team.Team.TeamName,
            GameName = team.Team.Game.Name
        });
    }
}

它到达foreach循环并找到“描述”属性。 但是当我尝试访问团队模型时,它为null。

有什么建议吗?

TeamMember模型类中应该有一个外键:

public class TeamMember
{
    public TeamMember()
    {
        this.Id = Guid.NewGuid().ToString();
    }

    [Key]
    public string Id { get; set; }

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

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

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

    [ForeignKey("UserId")]
    public virtual User Member { get; set; }
}

好的。 经过一番研究,我发现,由于数据不一致/数据库损坏,仅团队实体不存在。

谢谢您的帮助。

使用“ .Include(” Teams.Team.Game“)”的解决方案也可以解决问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM