MVC 5脚手架可以不为许多关系添加选择列表吗? (使用实体框架添加支架 - 带视图的MVC 5控制器)

时间:2013-11-14 08:49:08

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

我希望能够使用Visual Studio 2013中的" Add - Scaffold" 为与另一个模型有许多关系的模型添加CRUD。不幸的是,脚手架视图/控制器根本没有触及关系,在创建/编辑视图中没有呈现SelectList。

但是,脚手架适用于一对多的关系。多对多是一个未在Scaffold工具中实现的功能,还是我做错了什么?

我正在使用Fluent API。

这些是我的模型(为了便于阅读而剥离)

public class Category
{
    public int Id { get; set; }
    public virtual ICollection<Country> Countries { get; set; }
}

public class Country
{
    public string Iso { get; set; }

    public string GlobalName { get; set; }
    public string LocalName { get; set; }

    public virtual ICollection<Category> Categories { get; set; }
}

这些是Fluent API配置类

public class CategoryConfiguration: EntityTypeConfiguration<Category>
{
    public CategoryConfiguration()
    {
        HasKey(c => new { c.Id });

        HasMany(c => c.Countries)
            .WithMany(c => c.Categories)
            .Map(m =>
            {
                m.ToTable("CategoryCountry_JT");
                m.MapLeftKey("CategoryId");
                m.MapRightKey("CountryId");
            });
    }
}

public class CountryConfiguration : EntityTypeConfiguration<Country>
{
    public CountryConfiguration()
    {
        HasKey(c => new { c.Iso });

        Property(c => c.GlobalName).IsRequired();
        Property(c => c.LocalName).IsRequired();
    }
}

也许连接表必须声明为真实模型,而不是通过.Map(m => ...来使Scaffold工作?

1 个答案:

答案 0 :(得分:7)

显然,内置的脚手架功能不支持很多关系。

有一个pretty good blog post about it here on MSDN,它包含一个可用的解决方案。