.NET5使用EF Core执行update-migrations出现初始化字符串格式错误如何解决
错误根因
- 配置代码逻辑错误:你在
Startup.cs中调用UseSqlServer()时直接传入了字面量字符串"DefaultConnection",EF Core会将该字符串直接作为连接字符串解析,而非去读取配置文件中DefaultConnection对应的实际连接值,自然完全不符合连接字符串格式要求,触发从索引0开始的格式校验报错。 - 潜在的JSON转义问题:JSON语法中反斜杠
\是转义字符,如果你直接将带(localdb)\MSSQLLocalDB的连接字符串粘贴到appsettings.json中没有做转义,解析后的连接字符串会丢失反斜杠,导致格式异常。
解决方法
- 修正DbContext注入代码,通过配置服务读取连接字符串:
首先确保Startup.cs的构造函数已经注入IConfiguration,再修改注入逻辑:
public class Startup { public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { // 其他服务注册... services.AddDbContext<AppDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); } }
- 修正appsettings.json中的连接字符串格式,注意反斜杠转义,建议使用简化后的无冗余参数格式:
{ "ConnectionStrings": { // 注意反斜杠要写两个做转义,不要直接用master作为业务库,改成你自己的业务数据库名 "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=你的业务库名称;Trusted_Connection=True;" } }
如果你使用的是SQL Express,对应调整连接字符串即可:
"DefaultConnection": "Server=localhost\\SQLEXPRESS;Database=你的业务库名称;Trusted_Connection=True;"
内容的提问来源于stack exchange,提问作者DonutSteve
相关产品推荐
相关产品推荐

