Add-Migration 是为 EF Core 数据库模型变更生成迁移代码的关键步骤,创建含 Up/Down 方法的迁移类,需确保工具包安装、启动项目设置正确、DbContext 可发现,并支持 PMC 或 CLI 方式执行。

在 EF Core 中执行 Add-Migration 是为数据库模型变更生成迁移代码的关键步骤。它不会直接修改数据库,而是创建一个继承自 MigrationsDbContext 的迁移类(含 Up 和 Down 方法),记录你对实体、关系或配置的改动。
确保项目环境已就绪
添加迁移前需确认以下几点:
- 项目中已安装
microsoft.EntityFrameworkCore.Tools(用于包管理器控制台)或Microsoft.EntityFrameworkCore.Design(用于 .net CLI) - 启动项目(如 Web API 或 mvc 项目)已设为默认启动项目,或通过
-Project/--project明确指定含DbContext的项目 -
DbContext类已正确配置(例如在Program.cs中通过AddDbContext注册),且能被工具发现
使用包管理器控制台(PMC)添加迁移
在 visual studio 的“工具 → NuGet 包管理器 → 包管理器控制台”中运行:
Add-Migration InitialCreate -Context applicationDbContext
-
InitialCreate是迁移名称,可自定义(如AddUserEmail) -
-Context参数指定具体 DbContext 类型名,多上下文时必须提供 - 若提示“找不到 DbContext”,检查是否选对了默认项目(右上角下拉框),或显式加
-StartupProject
使用 .NET CLI 添加迁移
在命令行(终端)中,定位到含 DbContext 的项目目录,运行:
dotnet ef migrations add AddOrderStatus –context ApplicationDbContext
-
add是 CLI 中对应Add-Migration的子命令 -
--context同样用于指定上下文类型,大小写敏感 - 若报错 “No project was found”,请确认当前目录下有
.csproj文件,且已安装dotnet-ef全局工具(dotnet tool install --global dotnet-ef)
常见问题与注意事项
迁移不是万能的自动同步工具,需人工核对:
- 生成的迁移文件会放在
Migrations/目录下,打开查看Up(MigrationBuilder migrationBuilder)是否准确反映了你的改动(比如字段重命名可能被识别为删+增,丢失数据) - 若模型改动涉及数据迁移(如拆分列、转换值),需手动在
Up方法中补充migrationBuilder.sql("...")或使用InsertData/UpdateData - 误操作后想撤回:删除刚生成的迁移文件 + 对应快照(
*ModelSnapshot.cs),再重新Add-Migration;不要仅删文件而不删快照
基本上就这些。只要环境配对、上下文明确、命名清晰,Add-Migration 就是轻量又可靠的起点。