2017-01-03 9 views
1

プロジェクトおよびBOMの2つのテーブルがあります。それらの関係は多対多です。多対多テーブルへのアクセス

マイグレーションクラスを確認すると、自動的に生成された以下のコードが表示されます。

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テーブルがすでに自動的に生成されているので、私はテーブルにアクセスできるようにするには、再び次のコードを記述する必要がありますか?

私は問題が表には、モデル自体には実体ではない、それはプロジェクトとBOMの間に多く、多くの関係はSQLデータベース(IEでどのように表現されるかだけの結果だということかもしれないと思う
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がプロジェクトとBOMのForign Keyカラムのみで構成される場合、テーブルはインポートされません。これにより、BOMSのプロジェクトコレクションとプロジェクトのBOMコレクションが作成されますが、独立したエンティティとしては利用できません。

0

結合テーブルで)。

テーブルに追加の列が必要なため、アクセスする必要がありますか?もしそうならば、this questionと答えが一番上に表示されて、かなり役に立つと思えます。

関連する問題