非常感谢您提供有关如何将对象及其相关对象发送到MVC Razor视图的帮助。
我获得了所有对象及其相关对象的集合,并且在Entity Framework Core中使用了许多对象。所以我相信那部分有用。
DbContext:
public DbSet<Post> Posts { get; set; }
public DbSet<Tag> Tags { get; set; }
public DbSet<PostTag> PostTags { get; set; }
OnModelCreating:
modelBuilder.Entity<PostTag>()
.HasKey(t => new { t.PostId, t.TagId });
modelBuilder.Entity<PostTag>()
.HasOne(p => p.Post)
.WithMany(pt => pt.PostTags)
.HasForeignKey(p => p.PostId);
modelBuilder.Entity<PostTag>()
.HasOne(t => t.Tag)
.WithMany(pt => pt.PostTags)
.HasForeignKey(t => t.TagId);
控制器(或存储库):
var tags = context.Tags
.Include(e => e.PostTags)
.ThenInclude(e => e.Post)
.ToList();
如果在控制台应用程序中使用了集合tags
,我可以像这样循环遍历它:
// Iterate over all tags and get the posts related to those tags
foreach (var tag in tags)
{
Console.WriteLine($"Tag: {tag.Text}");
foreach (var post in tag.PostTags.Select(e => e.Post))
{
Console.WriteLine($" post: {post.Title}");
}
}
...这工作得很好,而且这种行为是我想在MVC视图中使用的行为-向数据显示所有“标记”及其各自的“帖子”的列表。
应该如何设置ViewModel,以及在遍历所有对象及其相关实体时如何在视图中使用该模型?