2013-12-09 64 views
0

我一直在試圖創建asp.NET MVC4一個小型項目,模擬小遊戲評論網站。沒有什麼奇怪的事情發生,我只想處理工具和語言的不同方面。asp.Net MVC4有兩個數據庫實體相互引用

目前我在想創建一個數據庫中設置的,當我創建一個遊戲數據庫集,我可以通過相關的流派引用遊戲流派一個ID,這樣關聯的。我使用的是代碼第一種方法創建的模型,但我不知道如何正確地引用存儲在虛擬集合中的類型,這樣如果我創建基於流派或一個表的表基礎上的遊戲,他們將正確引用。我只是在學習這種MVC方法,所以如果我的術語關閉,我很抱歉。

public class GamingModels : DbContext 
{ 
    public DbSet<Games> GameDb { get; set; } 
    public DbSet<Genre> GenreDb { get; set; } 

    public GamingModels() 
     : base("DefaultConnection") 
    { } 


    public class Games { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public string Summary { get; set;} 
     public int Rating { get; set; } 
     public virtual ICollection<Genres> Genres { get; set; } 
    } 

    public class Genre { 
     public int ID { get; set; } 
     public string Name { get; set; } 
     public virtual ICollection<Games> Games { get; set; } 
    } 
} 
+1

[開始寫一個答案,但這樣更好] [1] [1]:http://stackoverflow.com/questions/7050404/create-code-first-many-to-many -with-附加字段,在關聯表 – Nogusta

+0

你可能會考慮模型第一種方法了。代碼首先是好的,有你所有的「源代碼」在一個地方,包括數據庫模式,但很多事情創建數據庫首先成爲相當複雜,甚至深奧與代碼第一種方法時是微不足道的。創建你的數據庫,使用實體框架來渲染DAL層,然後離開你。要跟蹤必須投入生產的開發數據庫更改,請考慮使用Red Gates Sql Compare工具,這個工具值得300個許可證費用的每一位。 –

回答

1

您是否有中間表來映射遊戲和流派?如果沒有,你可以試試這個方法:

覆蓋的OnModelCreating方法:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Games>().HasMany(x=> x.Genres) 
     .WithMany(x => x.Games) 
     .Map(x => x.MapLeftKey("ID").MapRightKey("ID").ToTable("Genre")); 
    modelBuilder.Entity<Genre>().HasMany(x => x.Games) 
     .WithMany(x => x.Genres) 
     .Map(x => x.MapLeftKey("ID").MapRightKey("ID").ToTable("Games")); 
} 

如果您有解決許多一對多然後按照Nogusta的推薦表。

相關問題