Подтвердить что ты не робот

Как создать много-много отношений с новейшими ночными сборками EF Core?

Как вы используете Fluent API для создания отношения многих и многих между двумя таблицами в EF7 EF Core? Например, скажем, что у вас есть следующие таблицы:

Photos to People database diagram

Как можно было бы использовать modelBuilder в классе DbContext для определения таких отношений?

Я видел эту ссылку из заметок группы EF по этому вопросу, но это с прошлого года, и мне интересно, есть ли новая информация о том, как приблизиться к этому в EF7 EF Core.

Я могу создать одно-много отношений между Photos и PhotosPeople, а также People and PhotosPeople. База данных создается так, как мне бы хотелось, но для навигации между People и Photos теперь требуется взаимодействие с промежуточным объектом. Я бы хотел этого избежать.

4b9b3361

Ответ 1

Отслеживается # 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);