.NET 6本地生成迁移后如何更新服务器SQL Server数据库?
服务器数据库更新方案(.NET 6 + SQL Server Express + EF Core)
针对你的场景,有两种可靠的方式更新服务器数据库,同时支持生成SQL脚本,具体操作如下:
一、生成SQL脚本手动执行(推荐生产环境使用)
这种方式可以提前预览所有数据库变更,便于验证和排查问题:
- 打开本地的NuGet包管理器控制台,执行以下命令生成更新脚本:
# 如果服务器已经应用过部分迁移,指定起始和结束迁移 Script-Migration -From <服务器最后一次应用的迁移名称> -To <本地最新的迁移名称> -Output "C:\你的路径\db_update.sql" # 如果服务器从未应用过迁移,直接生成全量脚本 Script-Migration -To <本地最新的迁移名称> -Output "C:\你的路径\db_update.sql" - 打开生成的
db_update.sql脚本,仔细检查变更内容(比如涉及Identity用户表的字段修改、索引新增等) - 使用SQL Server Management Studio(SSMS)连接到服务器的SQL Server Express实例,执行该脚本完成数据库更新
二、直接在服务器执行迁移命令
如果服务器环境允许运行.NET工具,可直接通过命令行完成更新:
- 确保服务器上应用的
appsettings.json中,数据库连接字符串已指向服务器的SQL Server Express实例 - 在服务器上打开命令行,导航到应用发布目录,执行对应命令:
# 若服务器安装了.NET 6运行时 dotnet ef database update --project <你的项目名称> --startup-project <你的启动项目名称> # 若应用是独立发布(自带运行时) YourApp.exe ef database update - 注意:执行命令的账号需要拥有服务器数据库的Schema修改权限(如创建表、修改字段等)
关键注意事项
- 执行前务必备份服务器数据库,防止变更过程中出现数据丢失
- 核对服务器
__EFMigrationsHistory表的记录,确保迁移的起始版本与服务器实际状态一致,避免重复执行或遗漏迁移 - 针对IdentityCore的迁移,重点确认用户表(如
AspNetUsers)的变更不会影响现有用户数据
内容的提问来源于stack exchange,提问作者Rad
相关产品推荐
相关产品推荐

