以下是在 Code First 中手动执行此操作的方法。首先,您的 POCO 类可能看起来像这样:
public class Company
{
public Company()
{
Venues = new List<Venue>();
}
public int CompanyID { get; set; }
public string CompanyName { get; set; }
public virtual ICollection<Venue> Venues { get; set; }
}
public class Venue
{
public int VenueID { get; set; }
public string VenueName { get; set; }
public virtual ICollection<Company> Companies { get; set; }
}
在您的 DbContext 中:
public IDbSet<Company> Companies { get; set; }
public IDbSet<Venue> Venues { get; set; }
同样在 DbContext 类中重写 OnModelCreating 方法。这就是您映射 Company 和 Venue 之间多对多关系的方式:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.HasMany(comp => comp.Venues)
.WithMany(venue => venue.Companies)
.Map(mc =>
{
mc.ToTable("T_Company_Venue");
mc.MapLeftKey("CompanyID");
mc.MapRightKey("VenueID");
}
);
base.OnModelCreating(modelBuilder);
}
我在这里用完整的示例代码回答了另一个 EF 多对多问题:
MVC many to many
我还将以上内容写成 2 篇博文,提供完整的解决方案和示例代码可供下载:
第 1 部分:
Saving many to many part 1
第 2 部分:
Saving many to many part 2