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

在ASP.NET Core中使用Scaffold-DbContext生成模型时遇脚本终止错误求助

解决Scaffold-DbContext的Script Halted Error问题

我之前也碰到过这个让人头疼的问题,咱们一步步排查解决:

1. 先调整连接字符串的加密设置

你的SQL Server 2008版本可能不支持现代加密协议,原连接字符串里的Encrypt=True;TrustServerCertificate=False很可能是触发错误的原因。修改成以下配置试试:

Scaffold-DbContext "Server=SHAREDDBSQL\MSSQLSERVER2K8;Initial Catalog=AspnetCore-AngularTest;Persist Security Info=False;User ID=userappro;Password=userappro;MultipleActiveResultSets=True;Encrypt=False;TrustServerCertificate=True;Connection Timeout=30;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

这里做了几个关键调整:

  • 关闭强制加密:Encrypt=False
  • 允许信任服务器证书:TrustServerCertificate=True
  • 开启MultipleActiveResultSets=True,脚手架生成过程中经常需要这个特性来读取数据库元数据

2. 确认EF Core工具与项目包版本匹配

如果你的项目中使用的Microsoft.EntityFrameworkCore.SqlServer是某个特定版本(比如6.x、7.x),必须保证全局安装的dotnet-ef工具版本和它完全一致。

比如项目用的是EF Core 6.0,打开命令行运行:

dotnet tool uninstall --global dotnet-ef
dotnet tool install --global dotnet-ef --version 6.0.25

之后可以尝试用dotnet ef命令代替Package Manager Console的命令(有时候PMC的环境会有冲突):

cd 你的项目根目录
dotnet ef dbcontext scaffold "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer -o Models

3. 检查数据库账号的权限

确保userappro账号拥有对目标数据库的元数据读取权限。你可以在SSMS中用这个账号登录,执行以下查询测试:

SELECT * FROM sys.tables;
SELECT * FROM sys.columns;

如果查询失败,说明账号缺少权限,需要给它添加db_datareader角色,或者直接授予对系统视图的读取权限。

4. 排查特殊表/视图的问题

如果前面的步骤都没解决,可能是数据库中存在特殊结构的表(比如带特殊字符的名称、循环外键、无主键的表)。可以尝试只生成单个表来定位问题:

Scaffold-DbContext "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -t 你的表名

如果单个表生成成功,就逐个排查其他表,找到触发错误的那个表后,要么调整表结构,要么用-x参数排除它。

5. 确认PMC的默认项目选择正确

在Package Manager Console顶部的“默认项目”下拉框中,一定要选中你要生成模型的项目(比如Web项目或者专门的实体类库项目),选错项目也会导致脚手架执行失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:03:11