EF Core Code First迁移用于安全更新已存在数据库的结构而不丢失数据,核心流程是add-migration生成迁移文件、update-database应用变更;需在模型变更后使用,不可依赖EnsureCreated()重建。
EF Core 的 Code First 迁移,核心是“用 C# 类定义模型 → 生成数据库结构 → 后续模型变更时通过迁移脚本安全更新”,不重装库、不丢数据。
当你已经生成过数据库,又改了实体类(比如加字段、删属性、改类型、加外键),直接运行会报错:
“The model backing the context has changed since the database was created…”
这说明 EF Core 检测到代码模型和数据库表结构不一致,此时不能靠 EnsureCreated() 或删库重建——得走迁移流程。
确保已安装 Microsoft.EntityFrameworkCore.Tools 包,并在 PMC(包管理器控制台)中执行:
20251208180000_Init.cs),含 Up()(建表/改结构)和 Down()(回滚)方法
add-migration Init -project H.Modules.Operation -c MyDbContext
迁移不是一锤子买卖,日常开发中还会用到:
update-database 的不能删)迁移过程中同步插入初始数据,写在 OnModelCreating 里:
modelBuilder.Entity
注意:主键值必须明确指定,且该数据只在对应迁移首次应用时插入(后续迁移不会重复插入)。
基本上就这些。迁移本质是把模型变化转成可追溯、可复现、可协作的代码快照,不是黑盒操作,理解 Up/Down 逻辑就能稳住数据库演进。