C# 删除带有.net核心的tableprefix

C# 删除带有.net核心的tableprefix,c#,asp.net-core,C#,Asp.net Core,我们制作了一个.net核心应用程序。为此,我们必须使用现有的数据库。这个数据库也是从其他程序中使用的,所以我们不能对它进行更改。所以首先是数据库。问题是,我们的表中有一些前缀。表格始终以tbl开头,字段以单个前缀开头: 表名:tblPerson 字段:PeName,PeStreet 因此,如果我使用PowerTools,类总是有这个前缀。因为我们的数据库非常大,所以每当我们需要从数据库中创建一个新表时,我们都会使用powertools。因此,我们不能在DbContext中直接更改它们 我可以删除

我们制作了一个.net核心应用程序。为此,我们必须使用现有的数据库。这个数据库也是从其他程序中使用的,所以我们不能对它进行更改。所以首先是数据库。问题是,我们的表中有一些前缀。表格始终以tbl开头,字段以单个前缀开头:

表名:
tblPerson

字段:
PeName
PeStreet

因此,如果我使用PowerTools,类总是有这个前缀。因为我们的数据库非常大,所以每当我们需要从数据库中创建一个新表时,我们都会使用powertools。因此,我们不能在
DbContext
中直接更改它们


我可以删除前缀吗?或者在我的解决方案中全局更改它们?

您可以使用Fluent API配置实体,以将其映射到数据库表

  public class SchoolContext: DbContext 
    {
        public SchoolDBContext(): base() 
        {
        }

        public DbSet<Student> Students { get; set; }
        public DbSet<Standard> Standards { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //Configure default schema
            modelBuilder.HasDefaultSchema("Admin");

            //Map entity to table
            modelBuilder.Entity<Student>().ToTable("StudentInfo");
            modelBuilder.Entity<Standard>().ToTable("StandardInfo","dbo");
        }
    }
公共班级学校上下文:DbContext
{
public SchoolDBContext():base()
{
}
公共数据库集学生{get;set;}
公共数据库集标准{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
//配置默认架构
hasdaultschema(“Admin”);
//将实体映射到表
modelBuilder.Entity().ToTable(“StudentInfo”);
modelBuilder.Entity().ToTable(“StandardInfo”、“dbo”);
}
}

通过在项目文件夹中添加名为efpt.rename.json的文件,可以在反向工程过程中重命名表和列。以下是此文件的格式:

[
  {
    "UseSchemaName": true,
    "SchemaName": "machine",
    "Tables": [
      {
        "Name": "alert_ui",
        "Columns": [
          {
            "Name": "alarm_name",
            "NewName": "NameOfTheAlarm"
          },
          {
            "Name": "columnOldName1",
            "NewName": "columnNewName1"
          }
        ]
      }
    ]
  },
  {
    "UseSchemaName": true,
    "SchemaName": "master",
    "Tables": [
      {
        "Name": "measure",
        "Columns": [
          {
            "Name": "alarm_name",
            "NewName": "NameOfTheAlarm"
          },
          {
            "Name": "columnOldName1",
            "NewName": "columnNewName1"
          }
        ]
      }
    ]
  },
  {
    "UseSchemaName": false,
    "SchemaName": "dbo",
    "Tables": [
      {
        "Name": "work_cells",
        "NewName":  "WorkCell",
        "Columns": [
          {
            "Name": "columnOldName1",
            "NewName": "columnNewName1"
          }
        ]
      }
    ]
  }
]

github上指向此文件的链接:

您可以对数据库表名和列名使用不同的模型类名和属性名

使用
属性告诉EF core数据库中的名称

使用System.ComponentModel.DataAnnotations;
使用System.ComponentModel.DataAnnotations.Schema;
[表(“tblPerson”)]
公共阶层人士
{
[栏目(“PeName”)]
公共字符串名称{get;set;}
[列(“PeStreet”)]
公共字符串Street{get;set;}
// ...
}
您还可以使用Fluent API在
DbContext
中的
OnModelCreating
中定义这些属性


您可以使用
efpt.renaming.json
文件中的正则表达式模式删除表/列前缀:

[
  {
    "UseSchemaName": false,
    "SchemaName": "dbo",
    "TableRegexPattern": "^(tbl|vw)",
    "TablePatternReplaceWith": "",
    "ColumnRegexPattern": "^(tbl|vw)",
    "ColumnPatternReplaceWith": ""
  }
]

我不能这样做,因为我们不会一次性将完整数据库添加到解决方案中,因为数据库非常大。所以,当我们需要一个新表时,我们使用powertools导入它。当我们再次执行powertools时,它将再次生成每个表并覆盖现有的DataAnotation。这很有效!但另一个问题是:我们的数据库非常大。因此,重命名文件将非常大,可能不可读。有没有可能把它做成部分文件?在多个文件中重命名?