Отображение всех объектов и связанных с ними объектов (Entity Framework - многие ко многим) в представлении MVC - PullRequest
0 голосов
/ 12 февраля 2019

Был бы благодарен за помощь в том, как отправить «коллекцию» объектов вместе со связанными объектами в представление 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 будет настроен, и как эта модель будет использоваться в представлении при переборе всех объектов и связанных с ними объектов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...