2015-02-07 78 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; } 
} 

使用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 OnModelCreating。我如何使用EF7做同樣的事情?

+3

一樣EF6我承擔。據我所知,目前還沒有EF7的alpha版本,所以現在我不擔心它。 – Rhumborl 2015-02-07 14:11:40

回答

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 2016-09-10 02:07:31

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在這方面能夠向後兼容。