ASP.NET MVC如何自动生成具有“N对一”关系的视图

时间:2011-11-26 14:37:18

标签: asp.net-mvc ef-code-first

我问了一个类似的问题here,但这是另一个问题,假设我们有以下模型:

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

但是在自动生成的视图中,艺术家和流派之间没有任何关系,例如我希望创建艺术家的视图可以为新艺术家选择流派,有没有办法实现它?我知道我们可以手工实现视图,但我很自豪,自动生成的视图已经是Genre和Artist之间的关系

2 个答案:

答案 0 :(得分:2)

Scott Hanselman展示了一些Mvc Scaffolding功能,包括模型关系 http://channel9.msdn.com/events/mix/mix11/key01#time=0h40m45s 你可能会发现它很有用

答案 1 :(得分:0)

我不确定它能否为N:M关系做到这一点(如图所示,如果你从NuGet下载新的MVC 3工具版本,至少可以用于1:N关系)。

N:M关系,非常棘手。如果你有很多这样的关系,你可以做的是创建一个HTMLHelper或一个部分视图,它将获取一个导航属性(假设a =&gt; a.Genres)并创建一个允许更改映射的列表(在在这种情况下,添加与新流派的匹配或删除现有流派。)