.NET Core 6+EntityFrameworkCore+MySQL生成迁移失败_EF Core数据迁移操作步骤
在开发中,使用EF code first方式开发,那么如果涉及到数据表的变更,该如何做呢?当然如果是新项目,删除数据库,然后重新生成就行了,那么如果是线上的项目,数据库中已经有数据了,那么删除数据库重新生成就不行了,那么该如何解决呢?Ef提供了一种数据迁移的操作。具体该如何操作呢。
报错To undo this action, use Remove-Migration.
在vs2022的Nuget控制台,输入以下命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 执行迁移命令 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> 最后等待一分钟,再查看数据表的变化<br><br> |
使用 dotnet-ef 进行数据库迁移
安装 dotnet-ef
1 | dotnet tool install --global dotnet-ef |
添加一个新的migration
1 | dotnet ef migrations add initname |
更新数据库
1 | dotnet ef database update |
常见问题:1、Table ‘XXX’ already exists错误解决方法
普通的数据库迁移执行三条命令
(0)Enable-Migrations(打开数据迁移)
(1)Add-Migration InitialCreate
(2) Update-Database -Verbose(自动迁移只需要执行这个)
如果只是修改了字段,执行这些命令会提示
Table ‘XXXXXXXXXXXXXXXXXXX’ already exists
表示这个迁移会执行建表操作,已存在导致迁移失败。
楼主解决方法如下:
输入
1 | get -help entityframeworkcore |
获取指令帮助。
使用 Script-Migration Generates a SQL script from migrations.(脚本迁移从迁移生成SQL脚本。)
执行
1 | Script-Migration |
执行完毕会弹出迁移所用的sql语句,并且有时间记录
放到sql工具跑一下就好啦
2、EF Core 迁移过程遇到EF Core tools version版本不相符的解决方案
项目迁移遇到问题
1 | 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,执行命令
1 | dotnet tool update --global dotnet-ef |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通