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

VS2017在MacBook部署ASP.NET Core MVC执行dotnet ef更新数据库提示server关键字不支持

报错原因及解决方案

核心原因

  • 你的EF Core注册时使用了与SQL Server不匹配的数据库提供程序,或跨平台环境下的System.Data.SqlClient包存在兼容性缺陷,具体可分为三类常见场景:
    1. DbContext注册时未指定UseSqlServer()扩展方法,误调用了Sqlite、PostgreSQL等其他数据库的提供程序配置方法,这类提供程序的连接字符串不识别Server关键字
    2. 仍在使用.NET Framework时代的System.Data.SqlClient包,该包在Mac/Linux跨平台环境下存在大量兼容性问题,对连接字符串关键字的解析逻辑和Windows环境不一致
    3. 写在ConnectionStrings节点下的providerName是.NET Framework的旧配置规则,ASP.NET Core不会读取该配置自动匹配提供程序,无效配置可能干扰正常的配置读取逻辑

解决步骤

  1. 检查DbContext注册代码,确认使用SQL Server专属的配置方法,示例如下(.NET 6+ Program.cs写法):
builder.Services.AddDbContext<你的自定义DbContext类名>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
  1. 卸载项目中的System.Data.SqlClient包,安装Microsoft.EntityFrameworkCore.SqlServer包,该包会自动引入适配跨平台场景的Microsoft.Data.SqlClient依赖,无需单独安装。
  2. 可尝试将连接字符串中的Server关键字替换为等效的Data Source,部分跨平台版本的SqlClient对Server的识别存在缺陷,修改后的连接字符串示例:
"DefaultConnection": "Data Source=my_ip; Database=my_db; User Id=sa; Password=my_pass;"
  1. 确认EF Core工具版本与项目依赖的EF Core包版本完全一致,版本不匹配会导致连接字符串解析异常,可通过dotnet ef --version命令查看本地工具版本,与项目引用的Microsoft.EntityFrameworkCore包版本对比,统一即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:12:01