各位好:
我现在有一个问题,就是在EntityFramework中是否支持将三个以上的实体间的关系映射为一个表,比如,我有如下三个表:
1、用户User
2、门禁控制器Controller
3、门Door表
关系说明:一个用户(User)可以操作多个门禁控制器(Controller),而每个门禁控制器有多个门(Door)。
可以用EntityFramework来生成一个表达这三者关系的实体表吗?还是需要手动创建一个这样的表?
两个表间的关系是没有问题的,可我没有试过用EntityFramework来自动生成三个表关系的实体。
望各位帮忙,在此先谢谢了!

解决方案 »

  1.   

    在我的项目中,使用的是CodeFirst方式来创建数据库的。
      

  2.   

    我在覆写OnModelCreating方法时添加了如下代码:protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                //取消在数据库生成复数形式的表格名
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();            //移除数据库中的表和表之间一对多关系的级联删除
                //modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();            //Controller和表User是多对多的关系,将生成的结果放在表ControllerUser表中
                modelBuilder.Entity<Controller>()
                    .HasMany(c => c.Users).WithMany(u => u.Controllers)                
                    .Map(t => t.MapLeftKey("ID")
                        .MapRightKey("UserID")
                        .ToTable("ControllerUser"));            //Controller和Door表是一对多的关系
                modelBuilder.Entity<Controller>()
                    .HasMany(c => c.Doors).WithRequired(d => d.Controller); 
    }