2017-01-03 45 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和頂部投票答案看起來很有用。