Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc EF5首先使用迁移编写多对多代码_Asp.net Mvc_Entity Framework_Ef Code First_Entity Framework Migrations - Fatal编程技术网

Asp.net mvc EF5首先使用迁移编写多对多代码

Asp.net mvc EF5首先使用迁移编写多对多代码,asp.net-mvc,entity-framework,ef-code-first,entity-framework-migrations,Asp.net Mvc,Entity Framework,Ef Code First,Entity Framework Migrations,我以前做过这个,但由于某种原因,我不能让它在EF5中工作 通常,当我有像这样的多对多关系时,它会自动恢复 public class Beer { public int Id { get; set; } public virtual ICollection<Restaurant> Restaurants { get; set; } } public class Restaurant { public int Id { get; set; } publi

我以前做过这个,但由于某种原因,我不能让它在EF5中工作

通常,当我有像这样的多对多关系时,它会自动恢复

public class Beer
{
    public int Id { get; set; }
    public virtual ICollection<Restaurant> Restaurants { get; set; }
}

public class Restaurant
{
    public int Id { get; set; }
    public virtual ICollection<Beer> Beers { get; set; }
}

根据我追踪同一问题的经验,EF5.0RC中还不支持创建新M2M关系的迁移。因此,为什么它可以用于标准数据库创建,但不能用于迁移功能。您现在可以从标准的code first数据库初始化中导出create SQL,并在迁移时手动运行它


这应该在EF5.0进行RTM时解决,但目前我们必须等待解决。

如果您认为需要在关系中使用foreignKey属性,那么这应该会选择多对多etc关系。我一直使用该属性,而且从来没有遇到任何问题。请为阅读此内容的任何人更新。EF 5 Code First迁移确实以这种方式支持M2M定义。正如我所说,它在RTM发布之前就已经解决了。因此,正如答案所述,现在起作用了。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Beer>()
            .HasMany(b => b.Restaurants)
            .WithMany(a => a.Beers)
            .Map(m => m.MapLeftKey("BeerId")
                          .MapRightKey("RestaurantId")
                          .ToTable("BeersRestaurants"));
    }