EF6在ASP.NET Core 6.0执行Add-Migration后SQL Server未创建数据库
问题原因与解决方法
首先明确一个核心认知:
Add-Migration仅用于生成实体变更对应的迁移代码文件、更新迁移快照,不会执行数据库创建操作。
要真正生成数据库,你需要在Add-Migration执行无报错后,在包管理器控制台执行Update-Database命令,这一步才会将迁移逻辑应用到数据库服务,完成库和对应表结构的创建。
你当前的配置存在几个常见问题,按以下步骤逐一排查即可:
1. 修正连接字符串的LocalDB实例名
你配置的Server=(localdb)\\local指向了不存在的LocalDB实例,LocalDB默认安装的实例名是MSSQLLocalDB,修正后的连接字符串如下:
"ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb; Database=PradeepShopping; Trusted_Connection=True" }
如果不确定本机存在哪些LocalDB实例,可以打开CMD执行sqllocaldb info查看所有已安装实例,没有对应实例的话执行sqllocaldb create MSSQLLocalDB即可创建默认实例。
2. 确认服务配置正确
ASP.NET Core 6.0 最小托管模型下,需要在Program.cs中正确注册DbContext并读取连接字符串,参考配置如下:
// 读取连接字符串 var connStr = builder.Configuration.GetConnectionString("DefaultConnection"); // 注册DbContext,替换成你自己的DbContext类名 builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(connStr));
请确认你已经安装了必需的NuGet包:
Microsoft.EntityFrameworkCore.SqlServer(SQL Server数据库提供程序)Microsoft.EntityFrameworkCore.Tools(迁移命令工具支持)
3. 检查迁移命令执行的项目选择
如果你的解决方案包含多个项目:
- 包管理器控制台顶部的「默认项目」下拉框,必须选择你的DbContext定义所在的项目
- 解决方案的启动项目,必须设置为包含
appsettings.json配置文件的Web应用项目,否则迁移工具无法读取到正确的连接字符串配置。
完成以上修正后,重新执行Add-Migration 迁移名称生成迁移文件,再执行Update-Database即可正常创建数据库。
内容的提问来源于stack exchange,提问作者Pradeep
相关产品推荐
相关产品推荐

