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