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

使用Database First执行Scaffold-DbContext时提示“Unable to find a table”错误求助

解决EF Core Scaffold-DbContext 报“Unable to find a table”错误的方案

我来帮你排查这个问题,结合你给出的环境(VS2017 v15.6.2 + SQL Server 2008 v10.50.4)和操作步骤,大概率是以下几个原因导致的,咱们一步步来解决:

1. EF Core版本与SQL Server 2008不兼容

这是最可能的原因——EF Core 2.0及以上版本对SQL Server的最低要求是SQL Server 2012,而你用的是SQL Server 2008 R2,版本不匹配会导致EF Core无法正确识别数据库中的表结构。

解决办法:

如果你必须保留SQL Server 2008,得把EF Core降级到支持它的1.1.x版本,步骤如下:

  1. 打开包管理器控制台,先卸载现有的EF Core包:
    Uninstall-Package Microsoft.EntityFrameworkCore.SqlServer
    Uninstall-Package Microsoft.EntityFrameworkCore.Tools
    
  2. 安装兼容的1.1.x版本:
    Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 1.1.6
    Install-Package Microsoft.EntityFrameworkCore.Tools -Version 1.1.5
    
  3. 重新执行Scaffold命令(注意EF Core 1.x的命令语法更简洁):
    Scaffold-DbContext "Server=ph2srv76;Database=AVDRS;Integrated Security=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
    

2. 当前账号没有足够的数据库权限

EF Core生成实体时需要读取SQL Server的系统视图(比如sys.tables、sys.columns),如果你的VS运行账号没有这些视图的访问权限,就会找不到表。

解决办法:

登录SQL Server Management Studio,给当前账号添加必要权限:

USE AVDRS;
-- 添加数据读取权限
EXEC sp_addrolemember 'db_datareader', '你的域账号\用户名';
-- 授予查看数据库定义的权限
GRANT VIEW DEFINITION ON DATABASE::AVDRS TO '你的域账号\用户名';

3. 命令参数不完整

你提供的命令里-OutputDi明显没写完,完整参数应该是-OutputDir用来指定实体类的输出目录,参数缺失可能导致命令执行异常。

解决办法:

确保命令完整,比如指定输出到项目的Models文件夹:

Scaffold-DbContext "Server=ph2srv76;Database=AVDRS;Integrated Security=True;Trusted_Connection=True;" -Provider Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

4. 数据库中确实没有用户表

最后可以确认一下:登录SSMS,展开AVDRS数据库的「表」节点,看看有没有你要生成实体的用户表——如果数据库是空的,自然会报这个错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:22:22