エンティティフレームワークの Fluent API を使用して多対多の関係を構成する方法 質問する

エンティティフレームワークの Fluent API を使用して多対多の関係を構成する方法 質問する

まず EF コードで多対多の関係を設定しようとしていますが、デフォルトの規則ではうまくいきません。次のクラスは関係を説明しています:

class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
}

class Account
{        
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Product> Products { get; set; }
}

1 つのアカウントに複数の製品を含めることができます。

ただし、EF 規則では DB テーブルは次のように作成されます。

Products Table
--------------
Id
Name
Account_Id  <- What is this?

Accounts Table
--------------
Id
Name

これは多対多のテーブル構造のようには見えません。関係を反映して中間テーブルを作成するように Fluent API を構成するにはどうすればよいでしょうか。

AccountProducts Table
---------------------
Account_Id
Product_Id

ベストアンサー1

modelBuilder.Entity<Account>()
            .HasMany(a => a.Products)
            .WithMany()
            .Map(x =>
            {
                x.MapLeftKey("Account_Id");
                x.MapRightKey("Product_Id");
                x.ToTable("AccountProducts");
            });

おすすめ記事