gpt4 book ai didi

mysql - 在 MVC 中使用外键值填充列表

转载 作者:行者123 更新时间:2023-11-29 19:07:49 26 4
gpt4 key购买 nike

我正在使用 MVC 开发一个原型(prototype)平台,用户可以在其中创建个人资料并使用该个人资料发布文本帖子,就像社交媒体网站一样。我的数据库中有以下两个表:

个人资料

 public partial class Profile
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Profile()
{
this.Posts = new HashSet<Post>();
}

public int Id { get; set; }
public string UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Country_ { get; set; }
public System.DateTime DoB { get; set; }

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Post> Posts { get; set; }
}

}

帖子

public partial class Post
{
public int Id { get; set; }
public string Text { get; set; }
public System.DateTime DATE { get; set; }
public int ProfileId { get; set; }

public virtual Profile Profile { get; set; }
}

}

在我的 ViewModel 中,我有一个名为 PostList 的帖子列表,我想用用户创建的所有帖子记录填充该列表。因此,我需要用 Posts 中的 ProfileId 等于 Profile 的 Id 的所有记录填充列表,这取决于 Profile 中的 UserId 是否等于当前用户的 Identity。

简而言之,我需要:

帖子列表 = 帖子,其中 ProfileId = Profiles.Id 其中 Profiles.UserId = CurrentUserId。

有什么想法吗?我尝试了以下方法,但完全错误:

        var userId = User.Identity.GetUserId();
ViewModels.ProfileViewModel pVm = new ViewModels.ProfileViewModel();
pVm.PostList = db.Posts.Include(db.Profiles).Where(a => a.UserId == userId).ToList();
pVm.UserName = User.Identity.GetUserName();
return View(pVm);

最佳答案

您只需遍历查询中的关系即可:

pVm.PostList = db.Posts.Where(a => a.Profile.UserId == userId);

无需使用Include,因为Profile会自动加入进行查询。

关于mysql - 在 MVC 中使用外键值填充列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43347096/

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