Entity Framework Core 迁移

迁移概述

在实际项目中,数据模型随着功能的实现而变化:添加和删除新的实体或属性,并且需要相应地更改数据库架构,使其与应用程序保持同步。 EF Core 中的迁移功能能够以递增方式更新数据库架构,使其与应用程序的数据模型保持同步,同时保留数据库中的现有数据。

  • 当引入数据模型更改时,开发人员使用 EF Core 工具添加相应的迁移,以描述使数据库架构保持同步所需的更新。EF Core 将当前模型与旧模型的快照进行比较,以确定差异,并生成迁移源文件;文件可在项目的源代码管理中进行跟踪,如任何其他源文件。
  • 生成新的迁移后,可通过多种方式将其应用于数据库。 EF Core 在一个特殊的历史记录表中记录所有应用的迁移,使其知道哪些迁移已应用,哪些迁移尚未应用。

使用.NET Core CLI进行数据迁移

安装工具dotnet ef

dotnet tool install --global dotnet-ef

在这里插入图片描述
dotnet ef 命令
在这里插入图片描述
三个命令database、dbcontext、migrations(数据库,上下文、迁移)

命令子命令用法
Databasedrop删除数据库
update将数据库更新为指定的迁移
DbContextinfo获取有关DbContext类型的信息
list列出可用的DbContext类型
scaffold为数据库提供DbContext和实体类型
Migrationsadd添加新的迁移
list列出可用的迁移
remove删除上一次迁移
script从迁移生成SQL脚本

命令组成:dotnet ef 命令 子命令

向项目添加工具包Microsoft.EntityFrameworkCore.Design才能对项目进行数据库迁移工作

dotnet add package Microsoft.EntityFrameworkCore.Design

在这里插入图片描述

添加迁移

在这里插入图片描述
生成对应迁移文件
在这里插入图片描述

执行迁移

首次创建迁移文件

在这里插入图片描述
首次执行迁移将生成数据库
在这里插入图片描述
在这里插入图片描述
更新模型后添加迁移文件用来更新数据库
在这里插入图片描述添加新迁移文件,数据库上下文模型快照更新并生成新的迁移文件
在这里插入图片描述
在这里插入图片描述
执行新迁移文件,数据库更新
在这里插入图片描述
在这里插入图片描述

回滚删除迁移

删除迁移只能删除最新添加但未执行的迁移,如果要删除已经执行的迁移需要用dotnet ef database update xxx回滚到对应迁移版本,再用dotnet ef migrations remove(删除最后一个迁移) 删除掉回滚到对应迁移版本之后的迁移版本。

添加迁移未执行可以直接删除
在这里插入图片描述在这里插入图片描述回滚到指定迁移版本需要删除删除掉回滚到指定迁移版本之后的迁移版本。使用database update xxx回滚不会自动删除回滚到指定迁移版本后的迁移文件,需要手动执行迁移删除。
在这里插入图片描述

如果删除了迁移但是未对模型进行对应删除迁移相应修改操作的话,此时再次添加新的迁移文件将会和上次迁移文件的内容一样,说明迁移文件是根据模型与数据库上下文模型快照对比差异生成的。模型与数据库上下文模型快照对比决定迁移文件内容,但模型不会受迁移回滚而回滚,需要删除迁移文件后手动修改模型才能使模型和数据库同步。

参考:
https://docs.microsoft.com/zh-cn/ef/core/cli/dotnet#dotnet-ef-migrations-remove
https://www.entityframeworktutorial.net/efcore/cli-commands-for-ef-core-migration.aspx

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值