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