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

Oracle 19c与.NET Framework MVC 4.6兼容问题 寻无需升级.NET Core的方案

可行解决方案(无需升级.NET Core)

1. 同步安装匹配的EF适配包

你当前仅更新了Oracle.ManagedDataAccess 19.3.0版本,缺少.NET Framework环境下Entity Framework与Oracle对接的专属适配包,这是最常见的报错原因:

  • 卸载项目中所有旧版本Oracle相关NuGet包
  • 同步安装Oracle.ManagedDataAccess 19.3.0与Oracle.ManagedDataAccess.EntityFramework 19.3.0两个官方包
  • 在web.config中修正提供者注册配置:
<entityFramework>
  <providers>
    <provider invariantName="Oracle.ManagedDataAccess.Client" 
              type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=19.3.0.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </providers>
</entityFramework>
<system.data>
  <DbProviderFactories>
    <remove invariant="Oracle.ManagedDataAccess.Client" />
    <add name="ODP.NET, Managed Driver" 
         invariant="Oracle.ManagedDataAccess.Client" 
         description="Oracle Data Provider for .NET, Managed Driver" 
         type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=19.3.0.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  </DbProviderFactories>
</system.data>

2. 添加版本重定向绕过校验

Oracle 19.0.48属于19c的例行更新补丁版本,19.3.0版本的官方驱动本身支持该数据库版本,报错仅因为驱动内置的版本校验规则过于严格,可通过运行时版本重定向绕过校验:
在web.config的<runtime>节点下添加如下配置:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-19.3.0.0" newVersion="19.3.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Oracle.ManagedDataAccess.EntityFramework" publicKeyToken="89b483f429c47342" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-19.3.0.0" newVersion="19.3.0.0" />
  </dependentAssembly>
</assemblyBinding>

3. 降级驱动版本适配

若上述方案无效,可尝试将Oracle驱动降级为12.2.1100稳定版本,Oracle驱动支持向上兼容高版本数据库,12.2版本驱动可正常连接19c系列数据库,且不存在19.x版本驱动的严格版本校验问题。

4. 轻量替代方案

如果EF模型适配始终无法解决,可将报错对应的数据访问逻辑替换为直接使用ADO.NET编写原生SQL操作,完全避开EF与Oracle驱动的版本适配问题,整体改动量远小于全项目升级.NET Core。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:24:01