首先在EF代码中映射生成的关系表的名称

时间:2012-09-14 07:22:10

标签: entity-framework ef-code-first

我首先尝试使用Code,并且我需要在db中使用(所有)我的表的前缀。

在我的DbContext中,我有这些实体:

    public DbSet<Person> People { get; set; }
    public DbSet<Department> Departments { get; set; }

我可以通过覆盖成功映射我的实体的表名:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Person>().ToTable("w_people");
        modelBuilder.Entity<Department>().ToTable("w_departments");
    }

但是对于那些没有直接映射到表的表,我无法想出前缀。

在我的示例中,人们可以属于许多部门,因此EF创建了一个“非实体”表。 (我是一个EF菜鸟所以这些表可能有一个奇特的名字)所以在我的数据库中我得到三个表:

w_people
w_departments
PersonsDepartments

PersonsDepartments表就是我追求的目标。如何为这些生成的表添加前缀或在生成后更改名称/映射?

TIA

1 个答案:

答案 0 :(得分:5)

我已经解决了这个问题:

modelBuilder.Entity<Person>().HasMany(p => p.Departments)
               .WithMany(d => d.People)
               .Map(mc => mc.ToTable("w_peopledepartments"));