2012-06-15 130 views
5

我以前做過這個,但由於某種原因無法讓它在EF5中工作。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 Working

使用遷移,它不會產生該表。

EF Not working

我跑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")); 
    } 
+0

認爲你需要在你的關係中使用foreignKey屬性,這樣就可以獲得多對多的關係。無論如何,我一直使用這個屬性並且永遠不會遇到問題。 – davethecoder

回答

3

遷移創建一個新的M2M關係是根據我的經驗,不支持EF5.0RC,試圖追蹤相同的問題。因此,爲什麼它將在標準數據庫創建上工作,但不適用於遷移功能。您可以從標準代碼優先數據庫初始化中導出創建SQL,並在現在的遷移中手動運行它。

這應該在EF5.0進入RTM時解決,但現在我們必須等待它。

+0

謝謝,很高興知道! – jcreamer898

+0

任何人閱讀此更新。 EF 5 Code First Migrations確實以這種方式支持M2M定義。 –

+0

正如我所說,它已在RTM發佈之前解決。因此現在起作用,正如答案所述。 – VulgarBinary