Entity Framework Core 迁移命令小记
用 EF Core 做数据库迁移时,命令经常记混,每次都要去翻文档。干脆把常用命令整理成这篇笔记,需要的时候直接查,省得每次重新搜。
一、准备工作
先确认安装了工具包(只装一次):
dotnet tool install --global dotnet-ef
二、常用命令
- 添加迁移:根据实体变化生成迁移文件。
- 更新数据库:把迁移应用到数据库。
- 移除迁移:删掉最后一次没应用的迁移。
- 生成 SQL 脚本:不直接改库,生成 SQL 给 DBA 执行。
# 添加迁移 dotnet ef migrations add InitSchema # 更新到最新 dotnet ef database update # 回退到指定迁移 dotnet ef database update LastGoodMigration # 移除最后一次迁移 dotnet ef migrations remove # 生成 SQL 脚本 dotnet ef migrations script -o migrate.sql
三、迁移文件长什么样
每次 add 之后,项目里会生成一个 Migrations 文件夹,里面有三个文件:
- 时间戳_迁移名.cs:Up / Down 方法,分别对应升级和回滚。
- 时间戳_迁移名.Designer.cs:模型快照。
- AppDbContextModelSnapshot.cs:当前模型的快照。
四、多人协作注意事项
- 拉到别人的迁移后,先
dotnet ef database update,不要自己重新 add。 - 如果两个人同时 add 了迁移导致冲突,不要手动改快照文件,先沟通好谁的先合,再 rebase。
- 已经推到生产的迁移不要改,只能新增新的迁移去修正。
五、常见报错
刚开始用时经常遇到"未能创建因为该数据库存在提供程序包"之类的错误,一般是没装 Microsoft.EntityFrameworkCore.Design 这个包。补上就好了。另外一个常见错误是启动项目和数据项目不是同一个,需要用 --project 和 --startup-project 指定一下。