Entity framework EF-两个类之间的两种不同关系-首先使用代码的Fluent Api

Entity framework EF-两个类之间的两种不同关系-首先使用代码的Fluent Api,entity-framework,code-first,ef-fluent-api,Entity Framework,Code First,Ef Fluent Api,我有这门课 public class Client { public int Id { get; set; } public ICollection<Recipe> Recipes { get; set; } public ICollection<Recipe> Favorites { get; set; } } 我如何描述这两种关系?我需要额外的课程吗 谢谢你的帮助 编辑: 我应该说得更清楚些。客户。配方是客户实际拥有的配方: modelBui

我有这门课

public class Client
{
    public int Id { get; set; }
    public ICollection<Recipe> Recipes { get; set; }
    public ICollection<Recipe> Favorites { get; set; }
}
我如何描述这两种关系?我需要额外的课程吗

谢谢你的帮助

编辑:

我应该说得更清楚些。客户。配方是客户实际拥有的配方:

modelBuilder.Entity<Client>() 
    .HasMany(c => c.Recipes)
    .WithRequired(r => r.Client)
    .HasForeignKey(r => r.ClientId);
modelBuilder.Entity()
.HasMany(c=>c.Recipes)
.WithRequired(r=>r.Client)
.HasForeignKey(r=>r.ClientId);
Client.Favorites的问题在于它不拥有它们,因此Recipe.ClientId对于此特定关系无效。我需要一个关系表,但我需要在类中表达它,还是可以在fluentapi中表达它?如果是,如何进行


很抱歉,如果我一开始没有明确说明。

您应该能够将它们定义为标准的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 );
    }
}
class MyContext:DbContext
{
公共数据库集客户端{get;set;}
公共数据库集配方{get;set;}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasOne(p=>p.Clients)
.有很多(b=>b.食谱)。有外键(x=>x.ClientId);
modelBuilder.Entity()
.HasOne(p=>p.Clients)
.WithMany(b=>b.Favorites)。HasForeignKey(x=>x.ClientId);
}
}

请参阅,这是一个。同一配方不能属于其他客户吗?所以现在我的问题是:一个配方能被多个客户青睐吗?(我想是的)最受欢迎的是多对多的概念,从数据库角度讲,EFYes也是如此。是的,我现在明白了。哎呀,我走远了。但是我应该在recipes中有一个客户端集合,以便使用模型生成器声明多对多。对的
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 );
    }
}