2017-02-22 33 views
1

У меня есть этот классEF - два разных отношения между двумя классами - свободный Api с Code First

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; } 
} 

Как я могу описать эти две связи? нужен ли мне дополнительный класс (любимый)?

Спасибо за помощь.

EDIT:

Я должен был более ясным. Client.Recipes это рецепты клиент фактически владеет:

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

проблема с Client.Favorites является то, что он не владеет им, таким образом, Recipe.ClientId недопустим для данного отношения. Мне нужна реляционная таблица для этого, ut мне нужно выразить ее в классе или она может быть выражена в Fluent Api? Если да, то как?

Извините, если я не был явным вначале.

+0

См [беглый ответ] (http://stackoverflow.com/a/5559300/2030565) и вот один с [аннотациями данных] (http://stackoverflow.com/ вопросы/28582454/эф-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); 
    } 
}