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

创建数据库迁移时遇错误求助:dotnet ef命令执行失败

解决dotnet ef migrations add Initial执行失败的问题

让我帮你排查下这个迁移失败的问题,从你给出的appsettings.json配置来看,主要有几个关键错误导致连接字符串无法被正确解析:

  • JSON字符串中的反斜杠未转义:在JSON语法里,单个反斜杠\是转义字符,如果你要表示实际的反斜杠,必须写成双反斜杠\\。你当前的Server(localdb)\MSSQLLocalDB会被JSON解析器错误处理,正确写法应该是Server=(localdb)\\MSSQLLocalDB(另外补充下,localdb的标准连接写法需要给实例名加上括号,这里也一起修正了)。

  • 连接字符串的键名错误:你配置里用了复数的ConnectionStrings,但EF Core默认读取的键名是单数的ConnectionString,或者你需要在DbContext的配置逻辑里明确指定读取这个复数键。更稳妥的方式是改成单数键名,保持配置的规范性。

  • Trusted_Connection存在多余空格:你写的Trusted _Connection=True中间多了一个空格,这会导致SQL Server无法识别这个配置项,正确写法是Trusted_Connection=True。

修正后的appsettings.json示例

{
  "Data": {
    "SportStoreProducts": {
      "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=SportsStore;Trusted_Connection=True;MultipleActiveResultSets=true"
    }
  }
}

额外配置提示

如果你的DbContext是通过依赖注入配置的,确保在Program.cs里正确读取这个连接字符串:

builder.Services.AddDbContext<YourDbContext>(options =>
    options.UseSqlServer(builder.Configuration["Data:SportStoreProducts:ConnectionString"]));

如果是在DbContext的OnConfiguring方法里配置,应该这样写:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    var config = new ConfigurationBuilder()
        .SetBasePath(AppDomain.CurrentDomain.BaseDirectory)
        .AddJsonFile("appsettings.json")
        .Build();
    optionsBuilder.UseSqlServer(config["Data:SportStoreProducts:ConnectionString"]);
}

修正完这些配置后,再重新执行dotnet ef migrations add Initial应该就能正常创建迁移了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:08:01