ASP.NET Core 2.0 Code First迁移:切换至新数据库的正确流程问询
嘿,刚好之前帮团队处理过从LocalDB切换到新数据库的类似场景,给你梳理下完整的正确流程——不止是更新连接字符串,得按步骤来才能确保新库结构和旧的完全同步:
切换至新数据库的完整CLI操作流程
1. 先更新连接字符串
打开你的appsettings.json(或者对应环境的配置文件,比如appsettings.Production.json),把ConnectionStrings里的内容替换成新数据库的连接信息。举个SQL Server的例子:
"ConnectionStrings": { "DefaultConnection": "Server=你的新服务器地址;Database=目标库名;Trusted_Connection=True;MultipleActiveResultSets=true" }
👉 提前确认:新数据库所在的服务器你有权限访问,要是还没创建目标库也没关系,后续迁移命令会自动帮你创建(前提是账号有建库权限)。
2. 验证连接有效性(可选但推荐)
在项目根目录打开终端,跑这个命令确认EF Core能正确识别新连接:
dotnet ef dbcontext info
如果输出里显示的是新数据库的信息,说明连接配置没问题,放心往下走。
3. 把现有迁移应用到新数据库
这是最关键的一步!执行以下CLI命令,让EF Core把你已有的3个迁移文件依次在新数据库中执行:
dotnet ef database update
这个命令会自动在新数据库里创建__EFMigrationsHistory表(记录已应用的迁移版本),然后把所有迁移对应的表结构、初始数据(如果迁移里包含Seed数据)都同步过去。
4. 特殊场景处理
如果新数据库是非SQL Server类型(比如MySQL、PostgreSQL),你还需要额外做两步:
- 安装对应数据库的EF Core Provider NuGet包,比如MySQL用
Pomelo.EntityFrameworkCore.MySql; - 在
Startup.cs的ConfigureServices方法里,更新DbContext的配置,指定使用新的Provider。举个MySQL的例子:services.AddDbContext<YourDbContext>(options => options.UseMySql(Configuration.GetConnectionString("DefaultConnection"), new MySqlServerVersion(new Version(8, 0, 26))));
后续维护提示
之后你要是再做新的业务变更,正常用dotnet ef migrations add 迁移名称生成新迁移,再用dotnet ef database update同步到新数据库就可以了——EF Core会自动基于当前连接的数据库来处理版本管理。
内容的提问来源于stack exchange,提问作者Mihto
相关产品推荐
相关产品推荐

