2012-01-12 8 views
4

多対多の関係でテーブル名を指定することはできますか?EF 4.2コードファースト。多対多テーブルの名前を付ける方法

例:

class A 
{ 
    public int Id { get; set; } 
    // ..... 

    public virtual ICollection<B> BCollection { get; set; } 
} 

class B 
{ 
    public int Id { get; set; } 
    // ..... 

    public virtual ICollection<A> ACollection { get; set; } 
} 

私は、これはおそらく仕事ができると思ったが、どうやらそれはしていません。

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<A>().HasMany(x => x.BCollection).WithMany(y => y.ACollection).Map(m => m.ToTable("My_Custom_Name")); 
} 

答えて

12

また、列名をマープしてみてください。

 modelBuilder.Entity<A>() 
     .HasMany(x => x.BCollection).WithMany(y => y.ACollection) 
      .Map(m => 
      { 
       m.ToTable("My_Custom_Name"); 
       m.MapLeftKey("AId"); 
       m.MapRightKey("BId"); 
      }); 
関連する問題