2011-03-04 187 views
2

我想映射2種類型(用戶 - >語言)使用3個表(用戶 - 結表 - 語言),看起來像模型構建器期望兩種類型相互參考(如user.languages的口令,和language.UsersSpeaking)。所以基本上我可以建立類似
modelBuilder.Entity<User>().HasMany(x=>x.LanguagesSpoken).WithMany(x=>x.UsersSpeaking)
然而,我不需要從語言的參考,並不知道如何映射..
此外,有沒有辦法指定一個聯結表名稱?如何映射實體框架CTP5中的多對多關係?

謝謝!

回答

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

我想知道什麼是錯的,如果定義一個成員作爲語言ICollection的 用戶不流暢。我認爲這會有同樣的效果。 (我不關心Sql Server如何管理數據,POCO支持代碼沒有這方面的知識。) – 2011-03-04 03:47:37

+0

是的,在這種情況下,您不需要流暢的API。它將根據約定自動配置爲*:*關聯。 – 2011-03-04 04:18:43

+0

Morteza - 謝謝你! – Evgeni 2011-03-04 11:30:48