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

Mac下.NET Core MVC项目数据库迁移报错求助

解决“Connection string keyword 'server' is not supported”报错

核心原因

这个报错通常是EF Core使用的数据库提供程序与连接字符串格式不匹配,或依赖包缺失导致的。结合你的场景,按以下步骤排查:

1. 安装正确的EF Core SQL Server提供程序

确保项目已安装Microsoft.EntityFrameworkCore.SqlServer NuGet包,若未安装,在终端执行:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer

2. 检查DbContext配置代码

在Program.cs(.NET 6+)或Startup.cs(旧版本)中,确保配置DbContext时使用UseSqlServer方法,而非其他数据库提供程序(比如Sqlite的UseSqlite)。示例代码:

// Program.cs 示例
var builder = WebApplication.CreateBuilder(args);

// 配置DbContext并指定SQL Server提供程序
builder.Services.AddDbContext<YourDbContextName>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

var app = builder.Build();
// ... 其他中间件配置

3. 修正Docker环境下的连接字符串

若SQL Server运行在Docker容器中,localhost无法直接访问容器内服务,需修改Server值:

  • 方法一:使用SQL Server容器名称(启动容器时通过--name指定,比如mssql-db),端口默认1433:
    "ConnectionStrings": {
      "DefaultConnection": "Server=mssql-db,1433;Database=leavemanagementnet6;User=SA;Password=MyPassword123#;"
    }
    
  • 方法二:获取容器IP地址替换localhost:
    执行命令查询容器IP:
    docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 你的SQL Server容器ID或名称
    
    再修改连接字符串:
    "ConnectionStrings": {
      "DefaultConnection": "Server=容器IP地址,1433;Database=leavemanagementnet6;User=SA;Password=MyPassword123#;"
    }
    

4. 验证连接字符串格式

确认连接字符串无语法错误:

  • SQL Server连接字符串关键字不区分大小写,但需拼写正确(比如Server不要写成其他词汇)
  • 密码中的特殊字符(如#)在JSON配置中无需额外转义,你的当前配置无问题

完成以上步骤后,重新执行dotnet ef database update即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:05:17