无法逆向工程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
- 如果表属于其他架构(比如
Sales、HR),要带上架构名:
Scaffold-DbContext "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Sales.Products, HR.Employees
额外的注意事项
- NuGet包版本要匹配:确保你的项目已经安装了
Microsoft.EntityFrameworkCore.SqlServer和Microsoft.EntityFrameworkCore.Tools,而且两个包的版本必须一致,版本不兼容会导致各种奇怪的错误。 - 选择正确的项目:在Package Manager Console的顶部,确认“默认项目”下拉框选的是你要生成实体的Web API项目,别选成了解决方案里的其他项目。
- 连接字符串要有效:先在SQL Server Management Studio里测试下连接字符串能不能正常连接到数据库,避免因为连接问题导致逆向工程失败。
- 清理旧文件:如果之前生成过实体,最好先删除Models文件夹里的旧文件,再重新执行命令,避免文件冲突。
如果按照上面的步骤还是不行,把执行命令时弹出的具体错误信息贴出来,我再帮你进一步排查。
内容的提问来源于stack exchange,提问作者marvmax




