如何忽略构建错误正常执行Scaffold-DbContext命令
问题根因
-no-build是dotnet EF 命令行(CLI)工具的专属参数,包管理器控制台(PMC)的Scaffold-DbContext命令原生不支持这个参数,所以会触发参数找不到的报错。你遇到的构建错误是因为PMC的脚手架命令默认会先强制编译当前项目,编译失败就会终止流程。
可行解决方法
方法1:改用dotnet EF CLI执行,原生支持跳过构建(最省事)
- 先全局安装dotnet ef工具(已经装过可以跳过这步),打开任意终端执行:
dotnet tool install --global dotnet-ef
- 终端切到你项目的.csproj文件所在目录,确认项目已经安装了
Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.SqlServer两个nuget包,且版本一致。 - 执行以下脚手架命令,
--no-build参数会直接跳过项目构建步骤,不会被现有构建错误拦截:
dotnet ef dbcontext scaffold "你的真实数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer -o Models -f --no-build
生成的实体类和DbContext会自动存到项目的Models目录下,和你之前PMC命令的输出路径一致。
方法2:继续用PMC命令,临时绕开构建校验
如果你不想换CLI,可以临时把项目里所有报错的代码文件移出项目目录(或者在VS里右键把这些文件从项目中排除),保留一个可以正常编译通过的空项目结构,再执行你原来的Scaffold-DbContext命令即可。等实体和DbContext生成完成后,再把之前移走/排除的文件恢复回项目就行。
注意事项
- 用CLI命令时注意参数是双横杠开头的
--no-build,不要写成单横杠的-no-build,否则还是会识别失败。 - 执行命令前确认连接字符串有对应的数据库访问权限,否则跳过构建后还是会因为连不上数据库生成失败。
内容的提问来源于stack exchange,提问作者NajiMakhoul
相关产品推荐
相关产品推荐

