Comment créer de nombreuses relations avec les dernières versions nocturnes de EF Core?

entity-framework-core

Question

Comment utilisez-vous l'API Fluent pour créer plusieurs relations entre deux tables dans EF7 EF Core? Par exemple, supposons que vous ayez les tables suivantes:

Schéma de la base de données de Photos à Personnes

Comment pourrait-on utiliser le modelBuilder de la classe DbContext pour définir une relation comme celle-ci?

J'ai vu ce lien dans les notes de réunion de l'équipe EF concernant ce sujet, mais il date de l'année dernière et je me demande s'il existe de nouvelles informations sur la façon de l'aborder dans EF7 EF Core.

Je suis capable de créer une à plusieurs relations entre Photos et PhotosPeople ainsi que entre Personnes et PhotosPeople. La base de données est générée comme je le souhaiterais, mais la navigation entre People et Photos nécessite désormais une interaction avec une entité intermédiaire. J'aimerais éviter cela.

Réponse acceptée

Ceci est suivi par # 1368 . La solution de contournement consiste à mapper la table de jointure à une 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; }
}

Assurez-vous de configurer PersonPhoto avec une clé composite:

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

Pour naviguer, utilisez un Select:

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi