You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

.NET Core 3.1升级后EF Core迁移失败问题求助

解决.NET Core 3.1升级后EF迁移报错:NpgsqlOptionsExtension.get_Info未实现

这个问题的核心原因是Npgsql.EntityFrameworkCore.PostgreSQL版本与.NET Core 3.1不兼容。你当前使用的1.1.0.0版本Npgsql EF Core驱动是为.NET Core 2.x及更早版本设计的,而.NET Core 3.1对应的EF Core 3.1对扩展接口做了更新,旧版本驱动没有实现新增的get_Info方法——这和Autofac无关,也是你移除Autofac后问题依然存在的原因。

下面是具体的解决步骤:

  1. 升级Npgsql.EntityFrameworkCore.PostgreSQL到适配版本
    卸载旧版本包,安装3.1.x系列的稳定版(比如3.1.18,这是3.1分支的最终稳定版):

    dotnet remove package Npgsql.EntityFrameworkCore.PostgreSQL
    dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 3.1.18
    

    如果你习惯用NuGet包管理器,直接在Visual Studio里搜索这个包,卸载旧版本后选择3.1.x版本安装即可。

  2. 统一所有EF Core相关包版本
    检查项目中Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.Tools等包的版本,必须和.NET Core 3.1保持一致(即3.1.x版本)。可以用命令行查看当前包列表:

    dotnet list package
    

    若有版本不一致的包,同样升级到3.1.x系列。

  3. 清理并重建项目
    旧的程序集缓存可能导致问题残留,执行以下命令清理并重建:

    dotnet clean
    dotnet build
    

    也可以手动删除项目根目录下的binobj文件夹。

  4. 重新执行迁移命令
    现在再运行迁移命令应该就能正常工作了:

    dotnet ef migrations add Initial
    

另外提醒一下,后续升级.NET版本时,一定要注意第三方库的版本兼容性:EF Core驱动通常会和.NET Core的版本号保持对齐(比如.NET 5对应Npgsql EF Core 5.x,.NET 6对应6.x等),这样能避免大部分兼容性问题。

内容的提问来源于stack exchange,提问作者amiry jd

火山引擎 最新活动