2017-01-03 79 views
1

我有两个表,项目BOM。他们的关系是多对多访问多对多表

当我检查我的移植类,我可以看到下面的代码是自动生成的。

CreateTable(
    "dbo.ProjectBOMs", 
    c => new 
     { 
      Project_Id = c.Int(nullable: false), 
      BOM_Id = c.Int(nullable: false), 
     }) 
    .PrimaryKey(t => new { t.Project_Id, t.BOM_Id }) 
    .ForeignKey("dbo.Projects", t => t.Project_Id, cascadeDelete: true) 
    .ForeignKey("dbo.BOMs", t => t.BOM_Id, cascadeDelete: true) 
    .Index(t => t.Project_Id) 
    .Index(t => t.BOM_Id); 

但是,当我尝试使用以下方法访问此表时,它没有显示出来。

using(var db = new ApplicationDbContext()) 
{ 
    db.ProjectBOMs //<== there's no ProjectBOMs in db 
} 

由于ProjectBOMs表已经自动生成的,我必须再次写入下面的代码能够访问表?

modelBuilder.Entity<Project>() 
    .HasMany<BOM>(x => x.BOMs) 
    .WithMany(x => x.Projects) 
    .Map(x => 
    { 
     x.MapLeftKey("Project_Id"); 
     x.MapRightKey("BOM_Id"); 
     x.ToTable("ProjectBOMs"); 
    }); 

回答

0

如果表ProjectBOMs仅包含项目和物料清单的Forign Key列,则表格不会导入。这将导致BOMS上的项目集合和项目上的BOM集合,但不会作为独立实体提供。

0

我认为这个问题可能是表本身并不是模型中的一个实体,它是如何计划和BOM之间的多对多关系SQL数据库表示只是结果(即与一个加入表)。

您是否需要访问它,因为您需要表格中的其他列?如果是这样this question和顶部投票答案看起来很有用。