2

私は最初にコードを試してみましたが、データベース内の (すべての) テーブルのプレフィックスが必要です。

私の 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初心者なので、これらのテーブルにはおそらく派手な名前が付いています)したがって、私のデータベースでは3つのテーブルを取得します:

w_people
w_departments
PersonsDepartments

PersonsDepartments テーブルは、私が求めているものです。これらの生成されたテーブルにプレフィックスを付けたり、生成後に名前/マッピングを変更したりするにはどうすればよいですか?

ティア

4

1 に答える 1

5

私はこれを解決しました:

modelBuilder.Entity<Person>().HasMany(p => p.Departments)
               .WithMany(d => d.People)
               .Map(mc => mc.ToTable("w_peopledepartments"));
于 2012-09-17T14:00:17.137 に答える