一尘不染

如何使用实体框架流利的API配置多对多关系

c#

我试图首先在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; }
}

一个帐户可以有多个产品。

但是,EF约定将按以下方式创建数据库表:

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

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

这看起来不像多对多表结构吗?我如何配置流利的API以反映关系并创建中间表:

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

阅读 191

收藏
2020-05-19

共1个答案

一尘不染

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