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

发布于 2024-10-31 03:05:54 字数 478 浏览 4 评论 0原文

我有两个具有多对多关系的实体,如下所示:

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 映射此表

谢谢!

I have two entities with many to many relationship like this:

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;}

}

and I have an intermediate table named Bookauthor defined like this:

  BookAuthor: int
  int AuthorID
  int BookID

How to map this using FluentAPI

Thanks!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清风疏影 2024-11-07 03:05:54

这在 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"));

如您所见,我没有映射 BookAuthor 列。该列对于 EF 来说是未知的,并且必须自动递增。

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

This was problematic with EDMX but with EF 4.1 fluent API you can map it:

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

As you can see I don't map BookAuthor column. That column is unknown to EF and must be auto incremented.

This obviously can't work with a Code-first approach but only if you use Fluent API against existing database.

揽月 2024-11-07 03:05:54

我不认为 EF 允许您在多对多连接表中拥有单独的 Id。

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

顺便说一句,NHibernate 使用 idbag

I don't think EF allows you to have a separate Id in many-to-many junction tables.

The alternative is just mapping BookAuthor as an entity.

On a side note, NHibernate supports this construct using an idbag

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文