我们制作了一个.net核心应用程序。为此,我们必须使用现有的数据库。这个数据库也是从其他程序中使用的,所以我们不能更改它的某些内容。所以它首先是数据库。问题是,我们的表中有一些前缀。表始终以tbl开头,字段以单个前缀开头:
表名:tblPerson
字段:PeName、PeStreet、...
所以如果我使用PowerTools,类总是有这个前缀。因为我们的数据库非常大,所以每次需要从数据库中创建一个新的表时,我们都会使用powertools。因此,我们不能直接在DbContext中更改它们。
我能以某种方式删除前缀吗?或者在我的解决方案中对它们进行全局更改?
发布于 2020-04-06 15:13:00
在反向工程过程中,可以通过在项目文件夹中添加一个名为efpt.renaming.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上指向此文件的链接:https://github.com/ErikEJ/EFCorePowerTools/blob/master/src/GUI/EFCorePowerTools/efpt.renaming.json
发布于 2020-04-06 15:16:04
您可以使用与数据库表名和列名不同的模型类名和属性名。
使用Table和Column属性告诉EF核心数据库中的名称。
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在DbContext的OnModelCreating中定义这些属性。
发布于 2020-10-08 04:18:14
您可以在efpt.renaming.json文件中使用正则表达式模式删除表/列前缀:
[
{
"UseSchemaName": false,
"SchemaName": "dbo",
"TableRegexPattern": "^(tbl|vw)",
"TablePatternReplaceWith": "",
"ColumnRegexPattern": "^(tbl|vw)",
"ColumnPatternReplaceWith": ""
}
]https://stackoverflow.com/questions/61054527
复制相似问题