プロジェクトおよび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");
});