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

VS2017添加EF连接至SQL Server时遇“Failed to retrieve data”异常求助

解决EF连接SQL Server时的Method not found异常问题

我来帮你排查这个EF连接的异常问题,根据你描述的情况——测试连接正常但添加EF连接时报错、本地和Azure数据库都受影响、重装EF SDK无效,这大概率是**Microsoft.SqlServer.Management.Sdk.Sfc组件版本不兼容**导致的,下面是几种可行的解决方法:

1. 对齐SSMS与EF依赖组件的版本

这个错误最常见的原因是SQL Server Management Studio(SSMS)版本和项目中EF依赖的Microsoft.SqlServer.Management.Sdk.Sfc组件版本不匹配:

  • 打开项目的NuGet包管理器,搜索Microsoft.SqlServer.Management.Sdk.Sfc,查看当前安装的版本。
  • 打开SSMS,通过「帮助→关于」查看SSMS的主版本(比如19.x、18.x)。
  • 卸载现有不匹配的Sdk.Sfc包,安装与SSMS主版本一致的包(比如SSMS是19.x就安装19.x系列的Sdk.Sfc)。

2. 清理Visual Studio缓存与用户数据

VS的缓存可能导致组件加载异常,尝试以下操作:

  • 关闭所有Visual Studio窗口,删除%LocalAppData%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache目录下的所有文件。
  • 打开VS的开发者命令提示符,运行命令:devenv /resetuserdata(注意备份你的VS个性化配置)。
  • 重启VS后再尝试添加EF连接。

3. 修复或重装SSMS

既然测试连接正常但EF连接报错,可能是SSMS中的EF相关组件损坏:

  • 打开Windows设置→应用,找到「Microsoft SQL Server Management Studio」,点击「修改」→选择「修复」选项。
  • 如果修复无效,卸载SSMS后重新下载与你的SQL Server版本匹配的安装包进行安装。

4. 手动配置EF连接字符串(绕过可视化界面)

暂时避开可视化添加连接的问题,手动在配置文件中写入连接字符串:

  • 对于EF6项目,在app.config中添加:
    <connectionStrings>
      <add name="YourDbContextName" 
           connectionString="Server=你的服务器地址;Database=目标数据库名;User ID=账号;Password=密码;Trusted_Connection=False;" 
           providerName="System.Data.SqlClient" />
    </connectionStrings>
    
  • 在你的DbContext类中指定该连接字符串:
    public class YourDbContext : DbContext
    {
        public YourDbContext() : base("name=YourDbContextName")
        {
        }
    }
    

这种方式可以直接让项目正常连接数据库,同时避开可视化界面的组件冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:21:51