Come creare una relazione molti a molti con le ultime build notturne di EF Core?

entity-framework-core

Domanda

Come si usa l'API Fluent per creare una relazione molti a molti tra due tabelle in EF7 EF Core? Ad esempio, supponiamo di avere le seguenti tabelle:

Diagramma del database Photos to People

Come si può sfruttare il modelBuilder nella classe DbContext per definire una relazione come questa?

Ho visto questo link dalle note della riunione del team EF su questo argomento, ma è lo scorso anno e mi chiedo se ci sono nuove informazioni su come affrontarlo in EF7 EF Core.

Sono in grado di creare da una a molte relazioni tra Foto e PhotosPeople così come People e PhotosPeople. Il database è generato come mi piacerebbe che fosse, ma la navigazione tra Persone e Foto ora richiede l'interazione con un'entità intermedia. Mi piacerebbe evitare questo.

Risposta accettata

Questo è monitorato da # 1368 . La soluzione alternativa consiste nel mappare la tabella di join a un'entità:

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

Assicurati di configurare PersonPhoto con una chiave composta:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<PersonPhoto>().HasKey(x => new { x.PhotoId, x.PersonId });
}

Per navigare, usa un Seleziona:

// person.Photos
var photos = person.PersonPhotos.Select(c => c.Photo);


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow