.NET Core 6+EntityFrameworkCore+MySQL生成迁移失败_EF Core数据迁移操作步骤
在开发中,使用EF code first方式开发,那么如果涉及到数据表的变更,该如何做呢?当然如果是新项目,删除数据库,然后重新生成就行了,那么如果是线上的项目,数据库中已经有数据了,那么删除数据库重新生成就不行了,那么该如何解决呢?Ef提供了一种数据迁移的操作。具体该如何操作呢。
报错To undo this action, use Remove-Migration.
在vs2022的Nuget控制台,输入以下命令
执行迁移命令 PM> Add-Migration init To undo this action, use Remove-Migration. PM> Update-Database init Applying migration '20220917062429_init'. Done. PM> Add-Migration updatedb To undo this action, use Remove-Migration. PM> Update-Database updatedb Applying migration '20220917063252_updatedb'. Done. PM> 最后等待一分钟,再查看数据表的变化
使用 dotnet-ef 进行数据库迁移
安装 dotnet-ef
dotnet tool install --global dotnet-ef
添加一个新的migration
dotnet ef migrations add initname
更新数据库
dotnet ef database update
常见问题:1、Table ‘XXX’ already exists错误解决方法
普通的数据库迁移执行三条命令
(0)Enable-Migrations(打开数据迁移)
(1)Add-Migration InitialCreate
(2) Update-Database -Verbose(自动迁移只需要执行这个)
如果只是修改了字段,执行这些命令会提示
Table ‘XXXXXXXXXXXXXXXXXXX’ already exists
表示这个迁移会执行建表操作,已存在导致迁移失败。
楼主解决方法如下:
输入
get-help entityframeworkcore
获取指令帮助。
使用 Script-Migration Generates a SQL script from migrations.(脚本迁移从迁移生成SQL脚本。)
执行
Script-Migration
执行完毕会弹出迁移所用的sql语句,并且有时间记录
放到sql工具跑一下就好啦
2、EF Core 迁移过程遇到EF Core tools version版本不相符的解决方案
项目迁移遇到问题
The Entity Framework tools version '6.0.9' is older than that of the runtime '6.0.10'. Update the tools for the latest features and bug fixes. See https://aka.ms/AAc1fbw for more information.
更新EF Core tools version,执行命令
dotnet tool update --global dotnet-ef