繁体   English   中英

访问多对多表

[英]Access to Many-to-Many table

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

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

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");
    });

我认为问题可能是表格本身并不是模型中的实体,而是项目和BOM之间的多对多关系如何在SQL数据库中表示(即使用连接表)的结果。

您是否需要访问它,因为表中需要其他列? 如果是这样, 这个问题和最高投票的答案看起来非常有用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM