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
相关产品推荐
相关产品推荐

