Migration 常用命令
- Add-Migration Init --其中Init是你的版本名称
- update-database Init --更新数据库操作 init为版本名称
- Add-Migration EditPwdLength --同上,不在解释
- update-database EditPwdLength
- script-migration --生成脚本
- remove-migration --删除最新创建的迁移,add-migration后,还没有update-database时候可以使用,updata后不可使用
migration数据迁移非常的简单,大家在学习的时候,如果只有一个项目,实际上迁移是相对非常顺利的,坑是当你在生产环境中,项目越来越多,比如微服务有10几个项目的时候,就会遇到Build failed.的情况;
遇到异常 add-migration Build failed 解决办法
- 检查项目是否是启动项(这里有个坑:如果项目使用了DDD,生成要选中Project.Infrastructure,就是我们包含DBContext的类库,而非Project.API )
- 检查整个解决方案是否可以编译通过
- 上述不行,把其他项目卸载试试
- 首先一定要执行dotnet restore 查看网站的依赖关系
- 如果生成解决方案出现生成成功,但是编译跳过N个项目这种也不行,要么排除掉该生产失败的项目
遇到 “无法将“Add-Migration”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。”错误的排查思路,说明目前没有找到Microsoft.EntityFrameworkCore.Tools工具包,可以使用以下2种方案来修复:
方案一:
执行命令一:Import-Module C:Users{用户名}.nugetpackagesmicrosoft.entityframeworkcore.tools{core版本} oolsEntityFrameworkCore.psd1
执行命令二:Get-Verb
方案二:
Install-Package Microsoft.EntityFrameworkCore.Tools 安装工具包(我喜欢使用这种方案)
遇到“Method 'get_Info' in type 'MySql.Data.EntityFrameworkCore.Infraestructure.MySQLOptionsExtension' from assembly 'MySql.Data.EntityFrameworkCore, Version=8.0.18.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' does not have an implementation.”的解决方案
目前是因为MySql.Data.EntityFrameworkCore 8.0.18.0驱动包不支持Net Core3.1版本;使用Pomelo.EntityFrameworkCore.MySql即可