2017-02-22 46 views
1

我有這個類EF - 兩個類之間兩種不同的關係 - 流利的API和代碼首先

public class Client 
{ 
    public int Id { get; set; } 
    public ICollection<Recipe> Recipes { get; set; } 
    public ICollection<Recipe> Favorites { get; set; } 
} 

有2 1與配方類

public class Recipe 
{ 
    public int Id { get; set; } 
    public int ClientId { get; set; } 
    public Client Client { get; set; } 
} 

我怎樣才能形容一對多的關係這兩種關係?我需要額外的班級(最喜歡)嗎?

感謝您的幫助。

編輯:

我應該更清楚。 Client.Recipes是客戶實際擁有的食譜:

modelBuilder.Entity<Client>() 
    .HasMany(c => c.Recipes) 
    .WithRequired(r => r.Client) 
    .HasForeignKey(r => r.ClientId); 

與Client.Favorites的問題是,它並不擁有他們這樣Recipe.ClientId是這個特定關係無效。我需要一個關係表,我是否需要在類中表達它,還是可以在Fluent Api中表達?如果是,如何?

對不起,如果我一開始並不明確。

+0

請參閱[流利的答案](http://stackoverflow.com/a/5559300/2030565),這裏是一個與[數據註釋](http://stackoverflow.com/問題/ 28582454/EF-6-如何到組,二,外國鍵對同表)。 – Jasen

+0

難道同一個配方屬於另一個客戶嗎?這會讓很多人很多。 –

+0

所以現在我的問題是:一個配方可以受到多個客戶的青睞嗎? (我認爲是這樣) –

回答

1

您應該能夠將它們定義爲標準的1對N關係。應該是類似的東西

class MyContext : DbContext 
{ 
    public DbSet<Client> Clients { get; set; } 
    public DbSet<Recipe> Recipes { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Client>() 
      .HasOne(p => p.Clients) 
      .WithMany(b => b.Recipes) .HasForeignKey(x => x.ClientId); 

     modelBuilder.Entity<Client>() 
      .HasOne(p => p.Clients) 
      .WithMany(b => b.Favorites) .HasForeignKey(x => x.ClientId); 
    } 
}