ASP.NET Core MVC连接字符串无效,执行dotnet ef数据库更新命令报错
解决"keyword not supported: 'server.'" EF Core数据库更新错误
嘿,这个错误我之前帮不少开发者排查过,基本都是连接字符串和EF Core配置不匹配,或者字符串本身有小语法问题导致的,给你列几个最常见的修复方向:
1. 先检查连接字符串里的关键字拼写
错误提示里的server.(带点)是关键——你大概率在appsettings.json里把连接字符串的Server关键字写成了server.(末尾多了个点)。比如这种错误写法:
"ConnectionStrings": { "DefaultConnection": "server.=localhost;Database=YourProjectDb;Trusted_Connection=True;" }
把server.改成Server或者Data Source(SQL Server里这俩是等价的)就能解决这个问题。
2. 确认数据库提供者和连接字符串类型匹配
EF Core会根据你注册的数据库提供者来解析连接字符串,要是类型不匹配肯定会报错:
- 如果你用的是SQL Server,连接字符串用
Server、Database这类关键字,但你要是误注册了Sqlite提供者,它根本不认Server这个关键字; - 反过来,Sqlite的连接字符串是文件路径,要是你给SQL Server提供者传Sqlite的字符串也会出问题。
去检查你的Program.cs(或者老项目的Startup.cs)里的服务注册代码:
// ❌ 错误示例:注册了Sqlite但用了SQL Server的连接字符串 builder.Services.AddDbContext<YourDbContext>(options => options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection"))); // ✅ 正确示例:SQL Server要用UseSqlServer builder.Services.AddDbContext<YourDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
确保UseSqlServer/UseSqlite/UseNpgsql这些方法和你的连接字符串类型完全对应。
3. 排查连接字符串里的多余符号
有时候可能是关键字后面不小心加了空格或者点号,比如Server. = .;这种写法,EF Core解析的时候会把Server.当成一个未知关键字,自然就报错了。仔细核对连接字符串里的每一个关键字,去掉多余的符号就行。
最后验证步骤
- 保存修改后的配置文件和代码;
- 先执行
dotnet clean清理项目; - 再用
dotnet build重新生成; - 最后运行
dotnet ef database update试试。
内容的提问来源于stack exchange,提问作者Vista
相关产品推荐
相关产品推荐

