Как вы используете Fluent API для создания отношения многих-многих между двумя таблицами в EF7 EF Core? Например, скажем, что у вас есть следующие таблицы:
Как можно было бы использовать modelBuilder в классе DbContext для определения таких отношений?
Я видел эту ссылку из заметок совещания EF по этой теме, но это с прошлого года, и мне интересно, есть ли новая информация о том, как подойти к этому в EF7 EF Core.
Я могу создать один-много отношений между фотографиями и фотографиями, а также людьми и фотографиями. База данных создается так, как мне бы хотелось, но для навигации между People и Photos теперь требуется взаимодействие с промежуточным объектом. Я бы хотел этого избежать.
Это отслеживается # 1368 . Обходной путь состоит в том, чтобы сопоставить таблицу соединений с сущностью:
class Photo
{
public int Id { get; set; }
public ICollection<PersonPhoto> PersonPhotos{ get; set; }
}
class PersonPhoto
{
public int PhotoId { get; set; }
public Photo Photo { get; set; }
public int PersonId { get; set; }
public Person Person { get; set; }
}
class Person
{
public int Id { get; set; }
public ICollection<PersonPhoto> PersonPhotos{ get; set; }
}
Не забудьте настроить PersonPhoto
с помощью составного ключа:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<PersonPhoto>().HasKey(x => new { x.PhotoId, x.PersonId });
}
Для навигации используйте Select:
// person.Photos
var photos = person.PersonPhotos.Select(c => c.Photo);