簡體   English   中英

具有兩個數據庫實體的asp.Net MVC4互相引用

[英]asp.Net MVC4 having two database entities reference one another

我一直試圖在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; }
    }
}

您是否有一個中間表來映射游戲和流派? 如果沒有,您可以嘗試以下方法:

重寫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的建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM