Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架6未加载导航属性(延迟加载)_C#_Asp.net_.net_Asp.net Mvc_Entity Framework 6 - Fatal编程技术网

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

C# 实体框架6未加载导航属性(延迟加载),c#,asp.net,.net,asp.net-mvc,entity-framework-6,C#,Asp.net,.net,Asp.net Mvc,Entity Framework 6,我正在尝试加载以下数据库结构 用户->用户团队关系->团队->游戏 在这个关系中,“Team”在尝试访问时已经为null “用户。团队。团队” 我有以下数据库结构 public class User : IdentityUser { public User() { this.Id = Guid.NewGuid().ToString(); } public virtual ICollection<TeamMember> Teams {

我正在尝试加载以下数据库结构

用户->用户团队关系->团队->游戏

在这个关系中,“Team”在尝试访问时已经为null “用户。团队。团队”

我有以下数据库结构

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; }
}
公共类用户:IdentityUser
{
公共用户()
{
this.Id=Guid.NewGuid().ToString();
}
公共虚拟ICollection团队{get;set;}
}
公开课小组
{
公共团队()
{
this.Id=Guid.NewGuid().ToString();
}
[关键]
公共字符串Id{get;set;}
公共虚拟ICollection成员{get;set;}
[必需]
公共虚拟游戏{get;set;}
}
公开课小组成员
{
公共团队成员()
{
this.Id=Guid.NewGuid().ToString();
}
[关键]
公共字符串Id{get;set;}
公共虚拟团队{get;set;}
公共虚拟用户成员{get;set;}
}
公开课游戏
{
公共游戏()
{
this.Id=Guid.NewGuid().ToString();
}
[关键]
公共字符串Id{get;set;}
公共字符串名称{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
        });
    }
}
使用(var db=new ApplicationDbContext())
{
var user=db.Users.FirstOrDefault(x=>x.UserName.ToLower().Equals(UserName));
if(user==null)
{
返回新的ResponseViewModel(false,“用户nicht gefunden”,null);
}
var teams=新列表();
foreach(user.Teams中的var团队)
{
teams.Add(新团队()
{
Description=团队。Description,
TeamName=team.team.TeamName,
GameName=team.team.Game.Name
});
}
}
它到达foreach循环并找到“Description”属性。但是当我尝试访问团队模型时,它是空的


有什么建议吗?

团队成员模型类中应该有一个外键:

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”)”的解决方案也起到了作用

尝试
db.Users.Include(“Teams.Team.Game”)
以便也加载这些属性。还有lambda方式,即
db.Users.Include(x=>x.Teams)谢谢,但这不太管用:/我们在这里看到所有代码了吗?实际上,构造函数中是否有更多的初始化?不,这不是必需的。EF应该能够做到没有。