在Package Manager Console执行Update-Database时连接字符串未初始化错误
解决Update-Database时"The ConnectionString property has not been initialized."错误
1. 连接字符串键拼写不匹配(核心问题)
你在appsettings.json里定义的连接字符串键是DefautConnection(少了一个字母l),但在Program.cs里读取的是DefaultConnection,两者不匹配导致GetConnectionString返回null,EF Core无法获取到连接字符串。
修改appsettings.json中的连接字符串键:
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*", "ConnectionStrings": { "DefaultConnection": "server=LENOVO_NOV\\MSSQLEXPRESS;database=KiemTra2;integrated security=true;trustservercertificate=true" } }
2. 修复Program.cs的请求管道逻辑错误
你的Program.cs中把所有中间件配置都放在了!app.Environment.IsDevelopment()分支里,这意味着开发环境下程序不会加载任何中间件,也不会执行app.Run(),不仅程序无法正常运行,还可能导致EF Core命令无法正确读取配置。
调整后的Program.cs代码:
using EditUserRazor.Data; using Microsoft.EntityFrameworkCore; using EditUserRazor.Models; namespace EditUserRazor { public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddRazorPages(); //DI builder.Services.AddDbContext<UserDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); var app = builder.Build(); // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } // 公共中间件,所有环境都需要 app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run(); } } }
3. 确认UserDbContext的构造函数正确
确保你的UserDbContext类构造函数接受DbContextOptions<UserDbContext>参数并传递给基类,这样依赖注入才能正确传递连接字符串配置:
using Microsoft.EntityFrameworkCore; using EditUserRazor.Models; namespace EditUserRazor.Data { public class UserDbContext : DbContext { public UserDbContext(DbContextOptions<UserDbContext> options) : base(options) { } public DbSet<User> Users { get; set; } } }
完成以上修改后,重新在Package Manager Console中执行Update-Database命令即可。
内容的提问来源于stack exchange,提问作者Nov
相关产品推荐
相关产品推荐

