代码优先改变桥实体表的名称

时间:2012-01-24 23:31:23

标签: c# asp.net-mvc entity-framework ef-code-first

有没有办法控制桥实体创建的表的名称?现在,如果我运行这个:

public class Foo
{
    public Int32 FooId { get; set; }
    public virtual ICollection<Bar> Bars { get; set; }
}

public class Bar
{
    public Int32 BarId { get; set; }
    public virtual ICollection<Foo> Foos { get; set; }
}

生成的桥表名为BarFoo,无论如何都可以使它成为FooBar?

2 个答案:

答案 0 :(得分:5)

您可以通过如下映射自定义表名。

public class MyContext : DbContext
{    
     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     {
         modelBuilder.Entity<Foo>()
           .HasMany(e => e.Bars)
           .WithMany(s => s.Foos)
           .Map(l =>
             {
                l.ToTable("FooBar");
                l.MapLeftKey("FooId");
                l.MapRightKey("BarId");
             }
           );
    }
}

答案 1 :(得分:1)

查看EntityTypeConfiguration和流畅的配置API。那里有一个HasMany()方法,可以做你想要的。