EF - 两个类别之间的两种不同关系 - Fluent Api和Code First

时间:2017-02-22 18:16:42

标签: 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; }
}

与食谱类有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表达?如果是,怎么样?

很抱歉,如果我一开始并不明确。

1 个答案:

答案 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 );
    }
}