如何在Entity Framework CTP5中映射多对多关系?

时间:2011-03-04 02:17:50

标签: entity-framework-4 entity-framework-ctp5

我正在尝试使用3个表(用户 - 联合表 - 语言)映射2种类型(用户 - &gt;语言),看起来模型构建器期望两种类型相互引用(如用户)。 languagesSpoken和language.UsersSpeaking)。所以基本上我可以建立类似的东西 modelBuilder.Entity<User>().HasMany(x=>x.LanguagesSpoken).WithMany(x=>x.UsersSpeaking)
然而,我不需要从语言到用户的引用 - 并且无法弄清楚如何映射...
另外,有没有办法指定联结表名称?

谢谢!

1 个答案:

答案 0 :(得分:3)

以下将解决这个问题:

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