EF Core Code First模式下指定数据库名称的方法求助
EF Core Code First 指定专属数据库的解决方案
核心解决思路
表创建在master数据库里,本质是连接字符串没有指定目标数据库,或者指向了master。只需要在连接字符串中明确配置专属数据库名称,再配合EF Core的初始化/迁移逻辑即可完成切换。
步骤1:修改连接字符串
找到你的配置文件(通常是appsettings.json),修改SqlConnectionString,添加Database参数指定你的专属数据库名:
"ConnectionStrings": { "SqlConnectionString": "Server=你的SQL服务器地址;Database=YourProjectDB;Trusted_Connection=True;TrustServerCertificate=True;" }
- 替换
YourProjectDB为你想要的数据库名称 - 如果该数据库不存在,EF Core会在后续操作中自动创建(前提是连接SQL Server的账号拥有创建数据库的权限)
步骤2:初始化数据库(二选一)
方式一:直接创建数据库(适合简单场景)
在程序启动逻辑(比如Program.cs)中添加代码,确保程序启动时自动创建数据库:
var app = builder.Build(); // 初始化数据库 using (var scope = app.Services.CreateScope()) { var dbContext = scope.ServiceProvider.GetRequiredService<SADbContext>(); // 若数据库不存在则创建,直接生成表结构(不生成迁移文件) dbContext.Database.EnsureCreated(); } // 其他中间件配置... app.Run();
方式二:使用迁移创建(推荐,支持后续结构变更)
如果需要对数据库结构做版本控制,推荐使用EF Core迁移:
- 打开包管理器控制台(或终端),执行命令生成初始迁移:
Add-Migration InitialCreate - 执行迁移创建数据库并生成表:
Update-Database
注意事项
- 如果之前的迁移是基于
master数据库生成的,建议删除旧的迁移文件,重新执行Add-Migration,避免残留配置导致异常 - 确保连接SQL Server的账号拥有创建数据库的权限,否则会抛出权限不足的异常
内容的提问来源于stack exchange,提问作者chwunder
相关产品推荐
相关产品推荐

