2015-02-07 3 views
9

Модели:многие ко многим EF7

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 использованием 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")); 
} 

Я использую SQLite. Как я могу сделать то же самое с использованием EF7?

+3

Точно так же, как EF6 я полагаю. Насколько мне известно, еще нет альфа-релиза EF7, поэтому я бы не стал беспокоиться об этом пока. – Rhumborl

ответ

9

Документы для EF7 говорит, как это может быть achived: 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; } 
     } 
+0

Не знал, что вы можете _blockquote_ a_code sample_. Ницца! :) – thepirat000

7

API-интерфейс отображения будет изменен в EF 7. Было предложено более intuitive one to many API. Существует короткое слово для многих из многих:

Мы ожидаем, что API-интерфейс много-ко-многим будет очень похож на API-интерфейсы один-на-один и один-к-одному.

Но он еще не реализован в текущем источнике. В контексте, созданном для испытаний, говорится:

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

Это все, что я могу найти об этом.

Я уверен, что EF7 будет обратно совместимым в этой области.