3

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

不过,Scaffold 对于一对多关系来说效果很好。多对多是 Scaffold 工具中未实现的功能,还是我做错了什么?

我正在使用流畅的 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();
    }
}

也许 Join Table 必须声明为真实模型而不是通过.Map(m => ...Scaffold 才能工作?

4

1 回答 1

8

显然,内置的 Scaffold 功能不支持多对多关系。

在 MSDN 上有一篇关于它的非常好的博客文章,它包含一个可用的解决方案。

于 2013-11-14T09:07:14.247 回答