gpt4 book ai didi

asp.net-mvc - 填充导航属性的导航属性

转载 作者:行者123 更新时间:2023-12-02 12:23:23 25 4
gpt4 key购买 nike

如何使用特定值填充导航属性?

我有 3 个模型,游戏、用户团队、用户,定义如下。我有一个使用模型 IEnumerable 的 Razor View 。该 View 在 Games 上循环,并在该循环中在 UserTeams 上循环。到目前为止,一切顺利。

在 UserTeam 循环中,我想访问 User 属性,但它们为空。如何填充每个 UserTeam 对象的用户导航属性?我是否需要在 UserTeam 模型中使用带有参数的构造函数?

型号

public class Game
{
public Game()
{
UserTeams = new HashSet<UserTeam>();
}

public int Id { get; set; }
public int CreatorId { get; set; }
public string Name { get; set; }
public int CurrentOrderPosition { get; set; }

public virtual UserProfile Creator { get; set; }
public virtual ICollection<UserTeam> UserTeams { get; set; }
}


public class UserTeam
{
public UserTeam()
{
User = new UserProfile();
}

public int Id { get; set; }
public int UserId { get; set; }
public int GameId { get; set; }
public int OrderPosition { get; set; }

public virtual UserProfile User { get; set; }
public virtual Game Game { get; set; }
public virtual IList<UserTeam_Player> UserTeam_Players { get; set; }

}

public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string test { get; set; }

public UserProfile()
{
UserTeams = new HashSet<UserTeam>();
}

public virtual ICollection<UserTeam> UserTeams { get; set; }
[ForeignKey("CreatorId")]
public virtual ICollection<Game> Games { get; set; }
}

在我的 Razor View 中循环(模型为 IEnumerable)

@foreach (var item in Model) {
@foreach (var userteam in item.UserTeams) {
@Html.ActionLink("Join game as"+userteam.User.UserName, "JoinGame", new { gameid = item.Id, userid=userteam.UserId })
}
}

我的存储库中返回游戏的方法

public IEnumerable<Game> GetAllGames()
{
using (DataContext)
{
var gm = DataContext.Games.Include("UserTeams").ToList();
return gm;
}
}

最佳答案

您需要将其包含在您的存储库方法中。如果您使用急切加载,那么它会类似于

var gm = DataContext.Games
.Include(x => x.UserTeams)
.Include(x => x.UserTeams.Select(y => y.User))
.ToList();

我没有在不使用 LINQ 进行查询的情况下完成此操作,但我认为它会类似于:

var gm = DataContext.Games.Include("UserTeams.User").ToList();

希望这对你有帮助

关于asp.net-mvc - 填充导航属性的导航属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19131306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com