在MVC视图中显示所有对象及其相关对象(实体框架-多对多)

时间:2019-02-12 10:18:41

标签: asp.net-mvc entity-framework-core

非常感谢您提供有关如何将对象及其相关对象发送到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,以及在遍历所有对象及其相关实体时如何在视图中使用该模型?

0 个答案:

没有答案