У меня есть две сущности с отношениями многие ко многим, например:
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 ответа
Это было проблематично с EDMX, но с API-интерфейсом EF 4.1. вы можете сопоставить его :
modelBuilder.Entity<book>()
.HasMany(b => b.authors)
.WithMany(a => a.books)
.Map(m => m.MapLeftKey("BookID")
.MapRightKey("AuthorID")
.ToTable("BookAuthor"));
Как видите, я не отображаю столбец BookAuthor
. Этот столбец неизвестен EF и должен увеличиваться автоматически.
Очевидно, что это не может работать с подходом Code-first, но только если вы используете Fluent API для существующей базы данных.
Я не думаю, что EF позволяет иметь отдельный идентификатор в таблицах соединений «многие ко многим».
Альтернативой является отображение BookAuthor как объекта.
Кстати, NHibernate поддерживает эту конструкцию с помощью idbag
Похожие вопросы
Связанные вопросы
Новые вопросы
entity-framework
Entity Framework — это основанный на LINQ сопоставитель базы данных объектов для .NET. Он поддерживает отслеживание изменений, обновления и миграцию схем для многих баз данных. Также добавьте тег для конкретной версии.