5

我以前做过这个,但由于某种原因不能让它在 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; }
}

我想要一张 RestaurantsBeers 表或任何只有 RestaurantId 和 BeerId 的东西。

当我使用正常的 Code First 方式创建它时,只需运行它就可以工作的应用程序。

英孚工作

但是,使用迁移,它不会创建该表。

EF 不工作

Enable-Migrations然后我跑了Add-Migration FirstDb,最后Update-Database……没有骰子……

这个也试过...

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"));
    }
4

1 回答 1

3

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

这应该在 EF5.0 进入 RTM 时解决,但现在我们必须等待它。

于 2012-08-13T01:35:57.367 回答