1.执行 EF Core 数据库迁移

迁移是 EF Core 将实体类结构同步到数据库表的核心机制,需通过 NuGet 包管理器控制台(PMC) 执行:

  1. 打开 PMC:Visual Studio 顶部菜单 → 工具 → NuGet 包管理器 → 包管理器控制台。
  2. 执行添加迁移命令(首次迁移命名为 InitialCreate):

powershell

Add-Migration InitialCreate

  1. 执行更新数据库命令:

powershell

Update-Database

Add-Migration InitialCreate 和 

Update-Database 是 EF Core 中数据库迁移的核心命令,作用是将你的 C# 实体类结构同步到数据库表,实现 “代码定义模型 → 数据库自动建表” 的全流程。

1. Add-Migration InitialCreate:生成 “迁移文件”

  • 作用:根据当前实体类(如 Clazz、Student、EmpExpr 等)和 AppDbContext 的配置,生成一份 “数据库结构变更脚本”(即迁移文件)。
  • 细节:
    • InitialCreate 是迁移的 “名称”(可自定义,通常首次迁移用这个名字,表示 “初始创建”)。
    • 生成的文件会保存在项目的 Migrations 文件夹下,包含两部分内容:
      • Up() 方法:描述 “如何从空数据库创建出实体对应的表、字段、外键关系”(比如 CREATE TABLE 语句)。
      • Down() 方法:描述 “如何回滚本次迁移”(比如 DROP TABLE 语句,用于迁移出错时恢复)。

2. Update-Database:执行迁移,同步到数据库

  • 作用:将 Add-Migration 生成的迁移文件,实际执行到数据库中,让数据库表结构与实体类完全一致。
  • 细节:
    • 执行时,EF Core 会连接 appsettings.json 中配置的数据库(如你设置的 teach 数据库)。
    • 自动执行迁移文件的 Up() 方法,创建表、字段、外键等(比如为 Clazz 建表,为 Student 建表并添加关联 ClazzId 的外键)。
    • 数据库中会自动生成一张 __EFMigrationsHistory 表,记录已执行的迁移,避免重复执行。

总结:两步实现 “代码 → 数据库” 同步

  1. Add-Migration:“设计图纸”—— 根据实体类生成建表的 “施工方案”(迁移文件)。
  2. Update-Database:“按图施工”—— 根据 “施工方案” 在数据库中实际创建表结构。最终效果:你的 C# 实体类(如 

Student)会对应数据库中的 

Students 表,字段、类型、外键关系完全匹配,后续就能通过 EF Core 直接操作数据库了。

2.迁移回退

一、部分回退:回到指定迁移版本

如果只想回退到某一个历史迁移(保留部分历史结构):

  1. 打开包管理控制台(PMC)(Visual Studio → 工具 → NuGet 包管理器 → 包管理控制台)。
  2. 执行命令:

powershell

Update-Database 目标迁移名称

例如:Update-Database InitialCreate(假设要回退到名为 InitialCreate 的迁移)。

    • EF Core 会自动执行迁移的 Down 方法,将数据库结构回滚到该迁移对应的状态。

二、完全重置:清空所有迁移,重新映射

如果要彻底清除所有迁移痕迹,重新生成表结构:

步骤 1:回退到 “初始无迁移” 状态

在 PMC 中执行:

powershell

Update-Database $InitialDatabase

  • 这会将数据库回滚到没有应用任何迁移的初始状态(__EFMigrationsHistory 表会记录此状态)。

步骤 2:删除旧迁移文件进入项目的 

Migrations 文件夹,删除所有自动生成的迁移文件(以 “时间戳_迁移名称.cs” 命名的文件)。

  • 保留 DbContext 相关的类(如 YourDbContext.cs),仅删除迁移历史文件。

步骤 3:清空迁移历史表(可选)若想彻底清理数据库中记录迁移的 

__EFMigrationsHistory 表,可在数据库中执行 SQL:

sql

DELETE FROM __EFMigrationsHistory;

  • (此步骤可选,Update-Database $InitialDatabase 通常已将该表重置为初始状态)

步骤 4:重新创建迁移

在 PMC 中执行:

powershell

Add-Migration 新迁移名称 # 例如:Add-Migration NewInitialSetup

  • EF Core 会扫描当前实体模型(DbContext + 实体类),生成全新的迁移文件。

步骤 5:应用新迁移到数据库

在 PMC 中执行:

powershell

Update-Database

  • EF Core 会根据新的迁移文件,重新创建数据库表、外键等结构。

注意事项

  • 数据安全:回退或重置会修改数据库结构,若有重要数据,需先备份数据库。
  • 迁移方法完整性:确保迁移的 Up/Down 方法逻辑正确(如数据迁移、外键删除顺序等),否则回退时可能报错。
  • SQLite 等特殊数据库:若使用 SQLite,因不支持部分迁移操作,建议直接删除数据库文件后重新执行 Update-Database。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐