.NET EF 6 Pluralization,表名中带有前缀

时间:2014-10-01 10:02:46

标签: c# asp.net-mvc entity-framework plural

多个表名是EF中的默认约定。但是当我添加了前缀时,遗憾的是我无法复制名字。有什么想法吗?

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
  modelBuilder.Types()
              .Configure(entity => entity.ToTable("MyPrefix_" + entity.ClrType.Name));

  modelBuilder.Conventions.Add<PluralizingTableNameConvention>();
  base.OnModelCreating(modelBuilder);
}

1 个答案:

答案 0 :(得分:3)

PluralizingTableNameConvention 使用可在任何地方使用的 PluralizationService 。因此,您可以继续在配置代码中使用它。

以下是使用模型“Person”的示例,该模型应复数为“People”:

    public DbSet<Person> Persons { get; set; }

    protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        var serv = PluralizationService.CreateService(new System.Globalization.CultureInfo("en-us"));

        modelBuilder.Types()
         .Configure(entity => entity.ToTable("MyPrefix_" + serv.Pluralize(entity.ClrType.Name)));

        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        base.OnModelCreating(modelBuilder);
    }

运行此代码后,它会正确地将Persons模型复数为数据库中的“MyPrefix_People”。

要使用PluralizationService,您必须引用System.Data.Entity.Design程序集。