【发布时间】:2017-03-18 03:07:11
【问题描述】:
我正在尝试加载以下数据库结构
用户 -> UserTeamRelation -> 团队 -> 游戏
在这种关系中,“团队”在尝试访问时已经为空 “user.Teams.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 循环并找到“描述”属性。但是当我尝试访问团队模型时,它为空。
有什么建议吗?
【问题讨论】:
-
尝试
db.Users.Include("Teams.Team.Game"),以便同时加载这些属性。还有一种lambda方式是db.Users.Include(x=> x.Teams).Include... -
谢谢你,但这也没有用:/
-
我们在这里看到所有代码吗?实际上,构造函数中是否有更多的初始化?
标签: c# asp.net .net asp.net-mvc entity-framework-6