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调用的表。