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

时间:2011-04-06 04:58:27

标签: 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 ICollection<author> authors{get;set;}

}

我有一个名为Bookauthor的中间表,定义如下:

  BookAuthor: int
  int AuthorID
  int BookID

如何使用FluentAPI进行映射

谢谢!

2 个答案:

答案 0 :(得分:8)

EDMX存在问题,但使用EF 4.1流畅的API 可以映射

modelBuilder.Entity<book>()
            .HasMany(b => b.authors)
            .WithMany(a => a.books)
            .Map(m => m.MapLeftKey("BookID")
                   .MapRightKey("AuthorID")
                   .ToTable("BookAuthor"));

如您所见,我没有映射BookAuthor列。该列未知EF,必须自动递增。

这显然无法使用代码优先方法,但前提是您对现有数据库使用Fluent API。

答案 1 :(得分:0)

我认为EF不允许您在多对多联结表中使用单独的ID。

另一种选择是将BookAuthor映射为实体。

另外,NHibernate使用idbag

支持此构造