Wie schafft man eine Beziehung von vielen zu vielen mit den neuesten nächtlichen Builds von EF Core?

entity-framework-core

Frage

Wie verwenden Sie die Fluent-API, um eine Beziehung zwischen zwei Tabellen in EF7 EF Core zu erstellen? Angenommen, Sie haben die folgenden Tabellen:

Fotos zu Personen Datenbankdiagramm

Wie würde man den modelBuilder in der DbContext-Klasse nutzen, um eine solche Beziehung zu definieren?

Ich habe diesen Link von den Besprechungsnotizen des EF-Teams zu diesem Thema gesehen, aber er stammt aus dem letzten Jahr und ich frage mich, ob es neue Informationen darüber gibt, wie man dies in EF7 EF Core angehen kann .

Ich bin in der Lage, eine zu viele Beziehungen zwischen Fotos und PhotosPeople sowie People und PhotosPeople zu erstellen. Die Datenbank wird so generiert, wie ich es gerne hätte, aber die Navigation zwischen Personen und Fotos erfordert nun die Interaktion mit einer zwischengeschalteten Entität. Ich möchte das vermeiden.

Akzeptierte Antwort

Dies wird von # 1368 verfolgt . Die Problemumgehung besteht darin, die Join-Tabelle einer Entität zuzuordnen:

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 Sie sicher, dass Sie PersonPhoto mit einem zusammengesetzten Schlüssel konfigurieren:

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

Verwenden Sie zum Navigieren eine Auswahl:

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


Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum