EntityFramework和MVC中的多对多关系

时间:2013-03-21 14:56:05

标签: asp.net-mvc entity-framework

我在我的MVC项目中使用Code First appraoch。为简单起见,我有两个classes CourseModules,其中实体之间存在多对多的关系。这是我的课程结构

 public class Course
    {
        public int CourseId { get; set; }                  
        public string Title { get; set; }

        public virtual ICollection<Module> Modules { get; set; 
}

public class Module
    {
        public int ModuleId { get; set; }                 
        public string Title { get; set; }
        public int Credits { get; set; }

        public virtual ICollection<Course> Courses {get;set;   
 }

我使用EntityFramework为每个控制器创建了两个控制器,其中每个控制器为每个类创建表。现在拥有多对多关系,EF足够聪明,可以为我创建第三个联结表。 CourseModule(FK_Course_ID, FK_ModuleID)。但问题是这个表没有填充相应表中的键。这是空白的。任何人都可以帮助我,我怎么能搞清楚?

感谢。

1 个答案:

答案 0 :(得分:1)

我在这里出去了,但是你有以下内容吗? 上下文类:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
       base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<Course>()
                .HasMany(s => s.Modules)
                .WithMany(a => a.Courses)
                .Map(m =>
                {
                    m.MapLeftKey("CourseID");
                    m.MapRightKey("ModuleID");
                    m.ToTable("CourseModules");
                });
}

另外,我们可以在您尝试保存课程/模块的地方看到您的代码吗?