簡體   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