执行EF Core Add-Migration迁移PostgreSQL遇类型加载错误求助
解决EF Core PostgreSQL迁移时的TypeLoadException错误
这个错误的核心原因是NuGet包版本不兼容:Npgsql.EntityFrameworkCore.PostgreSQL与Microsoft.EntityFrameworkCore(及其Relational、Design子包)的版本不匹配。IRelationalValueBufferFactoryFactory类型在EF Core 7.0中已被移除,若你安装的Npgsql EF Core包是针对EF Core 6.x或更早版本的,就会尝试加载这个已不存在的类型,从而抛出异常。
解决步骤
统一所有EF Core相关包的版本:确保以下包的主版本完全一致(比如都用7.x或都用6.x):
Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.RelationalMicrosoft.EntityFrameworkCore.DesignNpgsql.EntityFrameworkCore.PostgreSQL
实操修复流程:
- 卸载所有上述相关NuGet包(可通过NuGet包管理器或CLI命令)
- 重新安装对应版本的包,严格保持主版本统一
- 清理项目:执行命令
dotnet clean - 重新生成项目:执行命令
dotnet build - 再次尝试运行迁移命令:
Add-Migration init_postgreeDB -Context 'ApplicationDbContext'
示例CLI命令(以EF Core 7.0为例)
# 卸载旧包 dotnet remove package Microsoft.EntityFrameworkCore dotnet remove package Microsoft.EntityFrameworkCore.Relational dotnet remove package Microsoft.EntityFrameworkCore.Design dotnet remove package Npgsql.EntityFrameworkCore.PostgreSQL # 安装统一版本的新包 dotnet add package Microsoft.EntityFrameworkCore --version 7.0.14 dotnet add package Microsoft.EntityFrameworkCore.Relational --version 7.0.14 dotnet add package Microsoft.EntityFrameworkCore.Design --version 7.0.14 dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 7.0.11
内容的提问来源于stack exchange,提问作者Ahmed Mostafa
相关产品推荐
相关产品推荐

