viele zu viele EF7

c# entity-framework-core

Frage

Modelle:

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

OnModelErstellen mit 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"));
}

Ich benutze SQLite. Wie kann ich dasselbe mit EF7 machen?

Akzeptierte Antwort

Die Dokumentation für EF7 sagt, wie dies erreicht werden kann: http://docs.efproject.net/en/latest/modeling/relationships.html#many-to-many

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

Beliebte Antwort

Die Mapping-API wird in EF 7 geändert. Es gab einen Vorschlag für eine intuitivere API für viele . Es gibt ein kurzes Wort zu vielen zu vielen dort:

Wir erwarten, dass die Viele-zu-Viele-API den One-to-Many- und One-to-One-APIs sehr ähnlich ist.

Aber es ist noch nicht in der aktuellen Quelle implementiert. In einem für Tests erstellten Kontext heißt es:

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

Das ist alles, was ich darüber finden kann.

Ich hoffe sicherlich, dass EF7 in diesem Bereich abwärtskompatibel sein wird.



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow