Как отобразить отношения «многие ко многим» в Entity Framework CTP5? - PullRequest
2 голосов
/ 04 марта 2011

Я пытаюсь отобразить 2 типа (пользователь -> языки), используя 3 таблицы (пользователь - таблица соединений - языки), и похоже, что modelBuilder ожидает, что оба типа будут иметь ссылку друг на друга (например, user.languagesSpokenи language.UsersSpeaking).Так что в принципе я могу построить что-то вродеmodelBuilder.Entity<User>().HasMany(x=>x.LanguagesSpoken).WithMany(x=>x.UsersSpeaking).Однако мне не нужна ссылка с языка на пользователя - и я не могу понять, как это отобразить ..Кроме того, есть ли способ указать имя соединительной таблицы?

Спасибо!

1 Ответ

3 голосов
/ 04 марта 2011

Следующие хитрости помогут:

public class User
{
    public int UserId { get; set; }
    public virtual ICollection<Language> LanguagesSpoken { get; set; }
}

public class Language
{
    public int LanguageId { get; set; }
    public int Name { get; set; }
}        

public class Context : DbContext
{
    public DbSet<User> Products { get; set; }
    public DbSet<Language> Languages { get; set; }        

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>()
                    .HasMany(x => x.LanguagesSpoken)
                    .WithMany()
                    .Map(c => 
                    { 
                        c.ToTable("yourDesiredName"); 
                    });
    }
}    
...