You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

无法逆向工程SQL Server数据库表,Web API搭建及命令使用遇阻

解决SQL Server表逆向工程失败及指定表生成的问题

嘿,我看你在EF Core逆向工程SQL Server表的时候遇到了麻烦,不管是生成所有表还是指定表都没成功,我来帮你排查下常见问题,教你正确的用法。

首先,你提到的示例命令有个明显的错误:数据库提供者名称写错了,SQL Server对应的提供者应该是Microsoft.EntityFrameworkCore.SqlServer,而不是Microsoft.EntityFrameworksCore(多了个s),这大概率是你一开始执行失败的原因之一。

正确的基础命令(生成所有表)

先确保这个基础命令能跑通:

Scaffold-DbContext "你的完整连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

比如Windows认证的连接字符串示例:
"Server=你的服务器名;Database=你的数据库名;Trusted_Connection=True;TrustServerCertificate=True"
SQL账号认证的连接字符串示例:
"Server=你的服务器名;Database=你的数据库名;User Id=账号;Password=密码;TrustServerCertificate=True"

生成指定表的正确命令

如果你不想生成所有表,用-Tables参数时要注意表名的格式:

  • 如果表在默认的dbo架构下,直接写表名,多个表用逗号分隔:
Scaffold-DbContext "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Users, Orders, Products
  • 如果表属于其他架构(比如SalesHR),要带上架构名:
Scaffold-DbContext "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Sales.Products, HR.Employees

额外的注意事项

  • NuGet包版本要匹配:确保你的项目已经安装了Microsoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.Tools,而且两个包的版本必须一致,版本不兼容会导致各种奇怪的错误。
  • 选择正确的项目:在Package Manager Console的顶部,确认“默认项目”下拉框选的是你要生成实体的Web API项目,别选成了解决方案里的其他项目。
  • 连接字符串要有效:先在SQL Server Management Studio里测试下连接字符串能不能正常连接到数据库,避免因为连接问题导致逆向工程失败。
  • 清理旧文件:如果之前生成过实体,最好先删除Models文件夹里的旧文件,再重新执行命令,避免文件冲突。

如果按照上面的步骤还是不行,把执行命令时弹出的具体错误信息贴出来,我再帮你进一步排查。

内容的提问来源于stack exchange,提问作者marvmax

火山引擎 最新活动