当前位置: 首页 > news >正文

EF Core 数据库迁移

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。
http://www.dtcms.com/a/560623.html

相关文章:

  • 【攻防实战】通达OA文件上传联动Cobalt Strike打穿三层内网(下)
  • 网站备案 教程广州花都区网站建设
  • FPC-40P-05转接板-嘉立创EDA设计
  • Java核心概念深度解析:从包装类到泛型的全面指南
  • 灵途科技亮相NEPCON ASIA 2025 以光电感知点亮具身智能未来
  • flash-attn安装过程中编译错误
  • 世界最受欢迎的免费架站平台经营网站 备案信息
  • 7.1 阴影贴图
  • Elastic AI agent builder 介绍(三)
  • React18中在有路由的情况下父组件如何给子组件传递数据?
  • 边缘计算和云计算有什么区别?
  • 做哪种网站流量大嵌入式软件开发工程师工作内容
  • 【第二十周】机器学习笔记09
  • Linux定时任务:crontab使用教程(附案例)
  • 网站建设配色方案wordpress对接静态网页
  • Instant Mail临时邮箱v7.3.0 最新解锁版
  • MPK(Mirage Persistent Kernel)源码笔记(5)--- 执行引擎
  • 微网站菜单网站开发用哪个框架
  • 【Cache缓存】基本概念
  • 数据结构:单链表(1)
  • 4.2 【2018统考真题】
  • swoole怎么做直播网站网站的安全维护
  • 学做ps的软件的网站新网站百度收录要几天
  • Redis数据结构命令
  • 【Dify】通过Docker-Compose的安装部署(Linux系统)
  • SEO优化学习指南
  • betaflight基于自制特殊固件配置文件的 F405 飞控固件升级与配置迁移指南(附 AI 沟通命令适配技巧)
  • 通过条形码获取对应商品信息python程序
  • LaTeX基础使用
  • 【Linux】基础指令(4):基础指令热键shell运行原理