创建数据库迁移时遇错误求助: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
相关产品推荐
相关产品推荐

