.NET EF 6表名中带前缀的复数形式

本文关键字:前缀 EF NET | 更新日期: 2023-09-27 18:25:21

多个表名是EF中的默认约定。但不幸的是,当我加上前缀后,我就不能再把名字变成复数了。有什么想法吗?

protected override void OnModelCreating(DbModelBuilder modelBuilder) {
  modelBuilder.Types()
              .Configure(entity => entity.ToTable("MyPrefix_" + entity.ClrType.Name));
  modelBuilder.Conventions.Add<PluralizingTableNameConvention>();
  base.OnModelCreating(modelBuilder);
}

.NET EF 6表名中带前缀的复数形式

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

下面是一个使用模型"人"的例子,该模型应复数为"人":

    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程序集。