You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core下Scaffold-DbContext执行失败:TypeLoadException加载ProductInfo失败

解决ASP.NET Core 3.1中Oracle数据库Scaffold-DbContext的TypeLoadException问题

你遇到的核心问题是EF Core相关NuGet包版本严重不匹配,导致内部类型加载失败。你同时安装了3.1.2版本的Microsoft.EntityFrameworkCore,却搭配了2.2.x甚至1.x版本的Design、Tools等依赖包,这些版本之间的API差异直接引发了ProductInfo类型加载失败的异常。下面是一步步的修复方案:

1. 统一EF Core系列包的版本

首先要把所有EF Core相关的包统一升级/降级到和Microsoft.EntityFrameworkCore 3.1.2一致的版本:

  • 先卸载这些版本不兼容的包:
    • Microsoft.EntityFrameworkCore.Design 2.2.6
    • Microsoft.EntityFrameworkCore.Relational 2.2.6
    • Microsoft.EntityFrameworkCore.Relational.Design 1.1.6(这个包在EF Core 2.0之后就被废弃了,完全不需要安装)
    • Microsoft.EntityFrameworkCore.Tools 2.2.6
  • 然后安装对应3.1.2版本的包:
    • Microsoft.EntityFrameworkCore.Design 3.1.2
    • Microsoft.EntityFrameworkCore.Relational 3.1.2
    • Microsoft.EntityFrameworkCore.Tools 3.1.2

2. 适配Oracle EF Core驱动版本

你当前用的Oracle.EntityFrameworkCore 2.19.6是适配EF Core 2.x的版本,和EF Core 3.1不兼容。需要换成支持EF Core 3.1的Oracle驱动版本,比如Oracle.EntityFrameworkCore 3.19.80(这个版本官方适配EF Core 3.1),同时确保Oracle.ManagedDataAccess.Core的版本和它保持一致(比如同样是3.19.80)。

3. 修正Scaffold命令的Provider参数

你在命令里用的Oracle.ManagedDataAccess是旧的驱动名称,针对EF Core的正确Provider名称应该是Oracle.EntityFrameworkCore。修正后的完整命令如下:

Scaffold-DbContext "DATA SOURCE=(DESCRIPTION=(SOURCE_ROUTE=OFF)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myHostName)(PORT=myPortNumber)))(CONNECT_DATA=(SID=mySID)(SERVER=DEDICATED))); User ID=myID;Password=myPassword;" Oracle.EntityFrameworkCore -OutputDir Models -Tables myTableName

4. 额外排查点

  • 确保在程序包管理器控制台的「默认项目」下拉框里选中的是你的ASP.NET Core 3.1 API项目,避免命令跑错项目
  • 如果执行命令还是有问题,可以尝试清理项目(右键项目→清理)、删除bin和obj目录,然后重启Visual Studio再重新执行

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:12:41