2017-02-22 48 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); 
    } 
}