EF Core 数据库迁移命令参考
在使用 Entity Framework Core
时,若你希望通过 Package Manager Console (PMC) 执行迁移相关命令,以下是常用的 EF Core
迁移命令:
PMC 方式
✅ 常用 EF Core PMC 命令(适用于迁移)
操作 | PMC 命令 |
---|---|
添加迁移 | Add-Migration MigrationName |
更新数据库到最新迁移 | Update-Database |
回滚一个迁移 | Update-Database -ToMigration PreviousMigrationName |
删除最后一次迁移(未应用到数据库) | Remove-Migration |
查看迁移历史 | Get-Migrations |
生成 SQL 脚本(从某一迁移到另一迁移) | Script-Migration -From MigrationA -To MigrationB |
生成 SQL 脚本(所有迁移) | Script-Migration |
📝 示例:
- 假设你添加了一个名为
InitialCreate
的迁移:
Add-Migration InitialCreate
- 然后将更改应用到数据库:
Update-Database
- 如果想回退到上一个迁移:
Update-Database -ToMigration PreviousMigrationName
⚠️ 注意事项:
-
使用这些命令前,请确保:
- 已安装
Microsoft.EntityFrameworkCore.Tools
NuGet 包; - 在
Visual Studio
中打开了 Package Manager Console; - 默认项目(
Default project
下拉框)选择的是包含DbContext
的项目。
- 已安装
-
如果你使用的是多项目结构,请确保启动项目和迁移所在项目一致或已正确配置设计时工厂(
IDesignTimeDbContextFactory
)。
CLI 方式
以下是 EF Core 对应于 CLI(命令行接口)的常用迁移命令,适用于 .NET CLI 工具:
✅ 常用 EF Core CLI 迁移命令
操作 | CLI 命令 |
---|---|
添加迁移 | dotnet ef migrations add MigrationName |
删除最后一次迁移 | dotnet ef migrations remove |
更新数据库 | dotnet ef database update |
更新数据库到指定迁移 | dotnet ef database update TargetMigrationName |
查看迁移历史 | dotnet ef migrations list |
生成 SQL 脚本(从某一迁移到另一迁移) | dotnet ef migrations script -o output.sql FromMigration ToMigration |
生成 SQL 脚本(所有迁移) | dotnet ef migrations script -o output.sql |
📝 示例:
- 添加一个名为
InitialCreate
的迁移:
dotnet ef migrations add InitialCreate
- 应用迁移到数据库:
dotnet ef database update
- 回退到某个特定迁移:
dotnet ef database update PreviousMigrationName
- 删除最后一次迁移(尚未应用到数据库时):
dotnet ef migrations remove
- 生成从
MigrationA
到MigrationB
的SQL
脚本:
dotnet ef migrations script -o migration_diff.sql MigrationA MigrationB
⚠️ 注意事项:
-
使用前请确保:
- 已安装
.NET SDK
; - 项目中已引用
Microsoft.EntityFrameworkCore.Design
和Microsoft.EntityFrameworkCore.Tools
; - 你的项目是可启动项目或已正确配置
DbContext
。
- 已安装
-
如果使用多项目结构,请在 CLI 中切换到包含
DbContext
的项目目录,或使用-p
参数指定项目路径。例如:
dotnet ef migrations add MyMigration -p ./MyProject/MyProject.csproj
🧠 选择合适的方式
EF Core
中 PMC
(Package Manager Console
)和 CLI
(命令行接口)的迁移命令功能相同,但语法不同:
- PMC 使用
Add-Migration
、Update-Database
等 PowerShell 风格命令; - CLI 使用
dotnet ef migrations add
、dotnet ef database update
等 .NET CLI 命令。
在选择 EF Core 迁移命令方式时,根据使用场景可以做如下推荐:
✅ 推荐使用 PMC(Package Manager Console):
- 适用人群:Visual Studio 用户、不熟悉命令行操作的开发者;
- 优点:
- 操作简单,集成在 Visual Studio 中;
- 不需要切换终端或目录;
- 支持自动补全和命令提示。
- 缺点:
- 只能在 Windows 上使用;
- 不适合自动化脚本。
📌 当你在 Visual Studio 中开发 ASP.NET Core 或 .NET Framework 项目时,首选 PMC。
✅ 推荐使用 CLI(.NET Command Line Interface):
- 适用人群:跨平台开发者、CI/CD 自动化用户、偏好命令行者;
- 优点:
- 跨平台支持(Windows、macOS、Linux);
- 易于集成到构建脚本、CI 流程中;
- 更贴近现代 .NET 开发流程。
- 缺点:
- 需要熟悉命令格式;
- 在多项目结构中需手动指定项目路径。
📌 如果你使用 VS Code、Rider 或进行持续集成部署,首选 CLI。
总结一句话推荐:
- PM 面向 Visual Studio 快速开发场景,CLI 更适合跨平台与自动化流程。
根据你的开发环境和团队协作方式选择最合适的方式即可。