记录在使用dotnet-ef 数据库迁移工具过程中遇到的问题
dotnet-ef命令在使用过程中遇到的版本兼容性问题解决
背景
最近在研发一个新的迭代,会给项目添加新的表设计,公司采用flyway数据库版本管理工具和C#的dotnet-ef 数据迁移工具对mysql表进行设计与管理.
问题引入
在表设计完成之后,为了检查表设计是否存在问题,所以我习惯性的执行了以下命令
dotnet build
执行完成之后,也没有错误,说明表设计中的各种引用是正确的
执行完成之后,准备执行dotnet -ef migrations add 命令,准备生成一个数据库设计的版本,但是执行后出现了以下错误
提示的是dotnet ef 命令找不到,所以根据某应搜索到解决方案,说的是执行安装命令
dotent tool install --global dotnet-ef
该命令会根据当前的版本安装一个可用的dotnet-ef版本,
但是安装完了之后,我以为终于可以了,赶紧生成表设计,写完CURD接口,早点下班吧。所以我又满怀期待的执行dotnet -ef migrations add 命令,问题接踵而至(⊙﹏⊙)
就这个问题,卡了我半个小时
问题解决
根据报错提示,说的是无法找到**.NetCore** 2.1.30版本,只在当前环境中找到了下列版本
3.1.32 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
5.0.9 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
5.0.17 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
6.0.18 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
并且给出了,让我去下载对应的版本,并且安装,接着我就点开了下载链接
.NetCore
下载之后,马上安装,又执行生成数据库版本命令,还是原来的错误,到这里我就头大了,不是按要求安装了吗。为啥还是不行呢?
多个方向解决
询问Chatgpt
回答的和某应的大差不差,都是让我安装或者更新 dotnet-ef
解决问题失败
安装工具的缘故
由于我使用的是dotnet tool 来安装 dotnet-ef 命令,而 .NETcore是通过安装包的形式安装的,两种方式安装不同,导致无法以相同的方式找到包,所以我首先卸载了根据提示安装的**.NetCore**版本,转而使用 dotnet tool 安装 .NeetCore
最后找不到包,这种方案失败
版本兼容性问题
在这之前使用该命令都是正常的,突然想起由于我在上个月由于调试Java源码的时候安装了 Visual Stadio 这个IDE工具,它在安装时会自动安装**.NetCore环境,所以最后的方案就是,卸载这个电脑的.Net**环境,重新安装。随后进入Windows的卸载界面,我好像突然明白了什么。
结合这三张截图,在执行命令的过程中提示了我找不到对应版本的**.NetCore**环境,只找到下面的几个版本
3.1.32 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
5.0.9 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
5.0.17 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
6.0.18 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
但是我又根据提示安装了2.1.30版本,为什么没有在这个目录下出现对应的目录呢?
最后我发现,原来是缺少SDK,而不是runtime环境
最后我去对应的版本页面,发现这个页面包含了两种类型的安装,runtime和SDK
最后下载SDK,执行安装,问题终于解决,完结洒花
总结
问题出现的情景可能是多方面,多角度的,有时候换个角度,或者换个方向思考,说不定就柳暗花明了。
更多推荐
所有评论(0)