You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在使用EF Core反向工程数据库时保留原始表名与属性名

解决EF Core Scaffold-DbContext反向工程保留原始命名的方案

最简解决方案(适用于EF Core 5+、Oracle.EntityFrameworkCore 5+版本)

直接在原有命令末尾添加-UseDatabaseNames参数即可,该参数会强制脚手架使用数据库中的原始表名、列名,不会自动转换为帕斯卡命名格式。

修改后的执行命令如下:

Scaffold-DbContext "User Id=x;Password=x;Data Source=(DESCRIPTION = (ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = xxxxx)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = xx)))" Oracle.EntityFrameworkCore -OutputDir Models -Context KoopNextContext -Tables EXCHANGE_RATES_D, EXCHANGE_RATES_M -UseDatabaseNames

低版本兼容方案

如果你使用的EF Core版本低于5.0,无法使用上述参数,可以通过自定义命名转换服务实现:

  • 项目中安装Microsoft.EntityFrameworkCore.Design包
  • 实现自定义的ICandidateNamingService,替换默认的命名转换逻辑,在命名转换时直接返回原始数据库名称
  • 在Scaffold命令中指定使用自定义的设计时服务

注意事项

使用-UseDatabaseNames参数时,-Tables参数后指定的表名需要和数据库中存储的表名完全一致,包括大小写、下划线格式,否则会出现无法找到表的错误。

内容的提问来源于stack exchange,提问作者Asım Gündüz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:45:03