Asp.Net Core 2.1 RC搭配Npgsql 2.1 RC反向生成数据库失败求助
解决Scaffold-DbContext时INpgsqlOptions依赖解析错误
我之前在使用EF Core 2.1 RC版本搭配Npgsql做数据库反向工程时,也碰到过一模一样的问题。这类错误大多是包版本不匹配、NuGet缓存冲突或者工具版本不一致导致的,下面是几个亲测有效的解决方案:
1. 严格对齐所有相关包的版本
EF Core和Npgsql的版本必须完全对应,哪怕是RC版本的微小差异都可能触发依赖注入异常。请检查你的项目.csproj文件,确保以下包的版本完全一致:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.0-rc1-final" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0-rc1-final"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference> <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.1.0-rc1-final" />
2. 清理NuGet缓存并重装依赖包
缓存的旧包文件很容易引发版本冲突,先清理本地NuGet缓存:
# 在Package Manager Console执行 dotnet nuget locals all --clear
然后卸载并重新安装相关包:
Uninstall-Package Npgsql.EntityFrameworkCore.PostgreSQL -Force Uninstall-Package Microsoft.EntityFrameworkCore.Tools -Force Install-Package Npgsql.EntityFrameworkCore.PostgreSQL -Version 2.1.0-rc1-final Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.1.0-rc1-final
如果用dotnet CLI的话,命令如下:
dotnet remove package Npgsql.EntityFrameworkCore.PostgreSQL dotnet remove package Microsoft.EntityFrameworkCore.Tools dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 2.1.0-rc1-final dotnet add package Microsoft.EntityFrameworkCore.Tools --version 2.1.0-rc1-final
3. 匹配全局EF Core工具版本
有时候全局安装的EF Core工具版本和项目依赖版本不匹配也会出问题,先检查全局工具版本:
dotnet ef --version
如果版本不是2.1 RC,安装对应版本的全局工具:
dotnet tool install --global dotnet-ef --version 2.1.0-rc1-final
完成以上步骤后,重新运行你的Scaffold命令:
Scaffold-DbContext "Host=localhost;Database=mydatabase;Username=myuser;Password=mypassword" Npgsql.EntityFrameworkCore.PostgreSQL
通常版本对齐+清理缓存就能解决这个问题,如果还是不行,可以尝试新建一个空的ASP.NET Core 2.1 RC项目测试反向工程,排除项目本身的配置冲突。
内容的提问来源于stack exchange,提问作者Joshua Leigh
相关产品推荐
相关产品推荐

