我有两个表,项目和 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 :(得分:0)
我认为问题可能是表格本身并不是模型中的实体,而只是在SQL数据库中表示项目和BOM之间的多对多关系(即使用连接表)的结果)。
您是否需要访问它,因为表中需要其他列?如果是这样this question并且最高投票的答案看起来非常有用。
答案 1 :(得分:0)
如果表ProjectBOMs
仅包含项目和物料清单的Forign Key列,则表格未导入。它将导致BOMS上的项目集合和项目上的BOM集合,但不会作为独立实体提供。