ASP.NET MVC, как автоматически генерировать представления с отношениями «N к одному» - PullRequest
0 голосов
/ 26 ноября 2011

Я задаю аналогичный вопрос здесь , но это еще одна проблема в той же точке, предположим, у нас есть следующие модели:

public class Genre {
    public int Id { get; set; }
    public string Title { get; set; }
    public ICollection<Artist> Artists { get; set; }

}


public class Artist {

    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<int> GenreID { get; set; }
    public ICollection<Genre> Genres { get; set; }
}


public class MusicNtoOneDB : DbContext {

    public DbSet<Artist> Artists { get; set; }
    public DbSet<Genre> Genres { get; set; }
}

Мне интересно, что каждый исполнитель может иметь один или несколько жанров, с EFCodefirst БД похожа на:

enter image description here

, но в автоматически сгенерированных представлениях нет никакой связи между Artist и Genre, например, я ожидал, что create представления Artist могут выбирать жанры для нового Artist. Есть ли способ реализовать это? Я знаю о том, что мы можем реализовать представления вручную, но мне интересно, чтобы автоматически сгенерированные представления были связаны между жанром и исполнителем

Ответы [ 2 ]

2 голосов
/ 27 ноября 2011

Скотт Хансельман показывает некоторые функции Mvc Scaffolding, в том числе модельные отношения на http://channel9.msdn.com/events/mix/mix11/key01#time=0h40m45s, которые могут оказаться полезными

0 голосов
/ 26 ноября 2011

Я не уверен, что он может сделать это для отношений N: M (как показал torm, это возможно по крайней мере для отношений 1: N, если вы загрузите новую версию инструментов MVC 3 из NuGet).

N: M отношения, довольно сложно.Что вы можете сделать, если у вас много таких отношений, как создать HTMLHelper или частичное представление, которое примет свойство навигации (скажем, a => a.Genres) и создаст список, который позволит вносить изменения в отображение (в этомслучай добавления нового жанра или удаления существующего).

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