EF 4.1 RC Отношение многие ко многим в EF CF - PullRequest
5 голосов
/ 06 апреля 2011

У меня есть две сущности со многими ко многим подобными отношениями:

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 ]

8 голосов
/ 07 апреля 2011

Это было проблематично с 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 для существующей базы данных.

0 голосов
/ 06 апреля 2011

Я не думаю, что EF позволяет вам иметь отдельный Id в таблицах соединений многие-ко-многим.

Альтернативой является просто отображение BookAuthor как объекта.

На сторонеобратите внимание, NHibernate поддерживает эту конструкцию, используя idbag

...