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

如何使用Scaffold-DbContext从SQL Server脚手架生成视图实体

解决Scaffold-DbContext无法生成SQL Server视图实体的问题

报错的核心原因是EF Core脚手架工具无法匹配到指定的视图元数据,按照以下步骤排查修正即可:

  • 补充视图的Schema前缀
    默认情况下SQL Server的视图属于dbo Schema,如果你的视图归属于其他自定义Schema,或者脚手架扫描时默认没有匹配到Schema,需要在-Tables参数中明确指定Schema,格式为Schema名.视图名,比如视图属于dbo时参数写为-Tables dbo.View1,dbo.View2
  • 检查权限与名称匹配
    确认连接字符串使用的数据库账号拥有两个视图的查询、查看元数据权限,同时核对视图名称拼写、数据库排序规则是否区分大小写,避免拼写误差导致匹配失败
  • 核对Nuget包版本
    确保项目中安装的Microsoft.EntityFrameworkCore.SqlServer、Microsoft.EntityFrameworkCore.Tools包版本为5.x系列,和项目的.NET 5目标框架版本兼容,版本不匹配会导致元数据扫描异常
  • 修正命令换行续行符
    如果你是在Visual Studio的包管理器控制台中多行输入命令,需要在每行末尾加上PowerShell续行符`,避免命令被截断执行,完整可运行的命令示例如下:
    Scaffold-DbContext "你的实际数据库连接字符串" `
         Microsoft.EntityFrameworkCore.SqlServer `
         -OutputDir Entities -ContextDir . `
         -Context MyContext -UseDatabaseNames -Force `
         -NoPluralize -NoOnConfiguring -Tables dbo.View1,dbo.View2
    
  • 无主键视图的特殊处理
    如果你的视图没有设置唯一主键,EF Core 5+会自动将生成的实体标记为无键实体类型,会在上下文的OnModelCreating方法中自动添加entity.HasNoKey()配置,无需额外手动修改即可正常使用。如果执行上述命令仍无法找到视图,可先移除-Tables参数执行全量脚手架生成,确认视图能被正常扫描后再单独指定视图名称生成。

内容的提问来源于stack exchange,提问作者Mårten Swärd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:18:03