beaucoup à beaucoup EF7

c# entity-framework-core

Question

Des modèles:

public partial class Film
{
    public int FilmID { get; set; }
    public virtual ICollection<Genre> Genres { get; set; }
}

public class Genre
{
    public int GenreID { get; set; }

    public virtual ICollection<Film> Films { get; set; }
}

OnModelCreating utilisant EF6

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Film>()
                    .HasMany(e => e.Genres)
                    .WithMany(e => e.Films)
                    .Map(m => m.ToTable("Genre_Film").MapLeftKey("Films_IdFilm").MapRightKey("Genres_IdGenre"));
}

J'utilise SQLite. Comment puis-je faire la même chose avec EF7?

Réponse acceptée

La documentation pour EF7 explique comment cela peut être réalisé: http://docs.efproject.net/fr/latest/modeling/relationships.html

        modelBuilder.Entity<PostTag>()
            .HasOne(pt => pt.Post)
            .WithMany(p => p.PostTags)
            .HasForeignKey(pt => pt.PostId);
        modelBuilder.Entity<PostTag>()
            .HasOne(pt => pt.Tag)
            .WithMany(t => t.PostTags)
            .HasForeignKey(pt => pt.TagId);

        public class PostTag
        {
          public int PostId { get; set; }
          public Post Post { get; set; }
          public int TagId { get; set; }
          public Tag Tag { get; set; }
        }

Réponse populaire

L'API de mappage va changer dans EF 7. Une API plus intuitive a été proposée. Il y a un mot court sur beaucoup à beaucoup là:

Nous nous attendons à ce que les API plusieurs à plusieurs soient très similaires aux API un à plusieurs et un à un.

Mais ce n'est pas encore implémenté dans la source actuelle. Dans un contexte créé pour les tests, il est écrit:

// TODO: Many-to-many
//modelBuilder.Entity<TSupplier>().ForeignKeys(fk => fk.ForeignKey<TProduct>(e => e.SupplierId));

C'est à peu près tout ce que je peux trouver à ce sujet.

J'espère sûrement que EF7 sera rétro-compatible dans ce domaine.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow