具有两个数据库实体的asp.Net MVC4相互引用

时间:2013-12-09 00:08:29

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我一直在尝试在asp.NET MVC4中创建一个模拟小型游戏评论网站的迷你项目。没有什么了不起的事情,我只想了解工具和语言的不同方面。

目前我正在考虑创建一个数据库集以将Genres与ID相关联,因此当我创建游戏数据库集时,我可以通过相关类型引用游戏。我使用Code第一种方法来创建模型,但我不确定如何正确引用存储在虚拟集合中的类型,以便如果我创建基于Genre的表或基于Game的表,他们将参考正确。我只是学习这种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 个答案:

答案 0 :(得分: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的建议。