首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.net核心删除tableprefix

使用.net核心删除tableprefix
EN

Stack Overflow用户
提问于 2020-04-06 15:02:11
回答 4查看 437关注 0票数 3

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

表名:tblPerson

字段:PeNamePeStreet、...

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

我能以某种方式删除前缀吗?或者在我的解决方案中对它们进行全局更改?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-04-06 15:13:00

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

代码语言:javascript
复制
[
  {
    "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上指向此文件的链接:https://github.com/ErikEJ/EFCorePowerTools/blob/master/src/GUI/EFCorePowerTools/efpt.renaming.json

票数 4
EN

Stack Overflow用户

发布于 2020-04-06 15:16:04

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

使用TableColumn属性告诉EF核心数据库中的名称。

代码语言:javascript
复制
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

[Table("tblPerson")]
public class Person
{
    [Column("PeName")]
    public string Name { get; set; }

    [Column("PeStreet")]
    public string Street { get; set; }

    // ...
}

您还可以使用Fluent API在DbContextOnModelCreating中定义这些属性。

Data annotations documentation

票数 5
EN

Stack Overflow用户

发布于 2020-10-08 04:18:14

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

代码语言:javascript
复制
[
  {
    "UseSchemaName": false,
    "SchemaName": "dbo",
    "TableRegexPattern": "^(tbl|vw)",
    "TablePatternReplaceWith": "",
    "ColumnRegexPattern": "^(tbl|vw)",
    "ColumnPatternReplaceWith": ""
  }
]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61054527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档