Loading

.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

  

 
 
 
 

 

posted @ 2022-10-04 01:22  梦想PHOTO  阅读(624)  评论(0编辑  收藏  举报