在 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 就是轻量又可靠的起点。
