我试图首先在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
modelBuilder.Entity<Account>() .HasMany(a => a.Products) .WithMany() .Map(x => { x.MapLeftKey("Account_Id"); x.MapRightKey("Product_Id"); x.ToTable("AccountProducts"); });