Visual Studio for Mac中EF Core 5连接Docker部署的SQL Server报错如何解决?
问题根源
你当前遇到的报错核心有两个诱因:
- 连接字符串使用了
Integrated Security=True,该配置仅支持Windows系统下的域集成身份验证,macOS环境、Docker部署的Linux版SQL Server均不支持该验证模式 - 缺少自签证书信任配置,Docker部署的SQL Server默认使用自签名SSL证书,macOS客户端默认会拦截不受信的证书连接
可行解决方案
按以下步骤调整即可:
- 替换连接字符串
关闭集成验证,改用SQL Server身份验证(即你部署Docker容器时设置的SA账号密码),同时添加证书信任配置,参考格式如下:
如果你映射的SQL Server端口不是默认1433,需要在地址后指定端口,比如映射的对外端口是1434,则调整为optionsBuilder.UseSqlServer("Data Source=localhost;Initial Catalog=Boletus;User ID=sa;Password=你部署Docker时设置的SA密码;TrustServerCertificate=True;Connect Timeout=30")Data Source=localhost,1434 - 验证基础连接可用性
可以先通过VS Code、Azure Data Studio等工具,使用SA账号密码尝试连接目标实例,确认账号密码正确、实例可正常访问 - 排查依赖包版本冲突
检查项目中安装的Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.SqlServer、Microsoft.Data.SqlClient包版本是否一致,避免跨版本调用引发的异常,版本对齐后清理NuGet缓存重新还原即可 - 可选:底层连接测试
如果你调整后EF Core仍报错,可以先编写极简的底层连接测试代码,排除EF Core配置问题:
若该测试运行正常,则问题出在EF Core的其他配置项,否则优先排查连接字符串、网络、账号权限问题。using Microsoft.Data.SqlClient; // 测试代码 using var conn = new SqlConnection("你调整后的连接字符串"); conn.Open(); Console.WriteLine("连接正常");
内容的提问来源于stack exchange,提问作者kintela
相关产品推荐
相关产品推荐

