Entity framework EF 4.1 EF CF中的RC多对多关系

Entity framework EF 4.1 EF CF中的RC多对多关系,entity-framework,mapping,many-to-many,entity-framework-4.1,fluent-interface,Entity Framework,Mapping,Many To Many,Entity Framework 4.1,Fluent Interface,我有两个实体具有如下多对多关系: class author { public int AuthorID{get;set;} public string Name{get;set;} public virtual ICollection<book> books{get;set;} } class book { public int BookID{get;set;} public string Name{get;set;} public virtual IColle

我有两个实体具有如下多对多关系:

class author
{
  public int AuthorID{get;set;}
  public string Name{get;set;}
  public virtual ICollection<book> books{get;set;}
}
class book
{
  public int BookID{get;set;}
  public string Name{get;set;}
 public virtual ICollection<author> authors{get;set;}

}
  BookAuthor: int
  int AuthorID
  int BookID
如何使用FluentAPI对此进行映射


谢谢

我认为EF不允许在多对多连接表中使用单独的Id

另一种方法是将BookAuthor映射为一个实体


另一方面,NHibernate使用一个

来支持此构造。这在EDMX中是有问题的,但在EF 4.1 fluent API中,您可以映射它:

modelBuilder.Entity<book>()
            .HasMany(b => b.authors)
            .WithMany(a => a.books)
            .Map(m => m.MapLeftKey("BookID")
                   .MapRightKey("AuthorID")
                   .ToTable("BookAuthor"));
modelBuilder.Entity()
.HasMany(b=>b.authors)
.有很多(a=>a.书)
.Map(m=>m.MapLeftKey(“BookID”)
.MapRightKey(“AuthorID”)
.ToTable(“书籍作者”);
正如您所见,我没有映射
BookAuthor
列。EF不知道该列,必须自动递增


这显然不能使用代码优先的方法,但只有在对现有数据库使用Fluent API的情况下才能使用。

它可以工作吗?真正地在哪种情况下?4.1不关心onmodel创建覆盖。我真的很震惊。ToTable(“BookAuthor”)不创建BookAuthor调用的表。