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

VS2017下.NET 4.5项目使用JetEntityFrameworkProvider报提供者名称识别错误如何解决?

报错原因与修复方案

根因

你的配置缺失Entity Framework配置节注册,且使用外部连接初始化DbContext时未显式绑定Jet Provider标识,同时可能存在依赖包版本不兼容问题,导致EF无法识别已注册的JetEntityFrameworkProvider。

修复步骤

  • 确认依赖版本匹配
    .NET Framework 4.5仅支持JetEntityFrameworkProvider 1.2.3及更早版本,更高版本仅适配.NET Framework 4.6.1+,同时需保证Entity Framework版本在6.2.0~6.4.4区间,版本不匹配会导致注册的Provider无法被EF加载。
  • 补充DbContext显式Provider声明
    你当前使用外部DbConnection初始化DbContext时,EF无法自动关联到已注册的Jet Provider,需要修改ORM类的带参构造函数,显式指定Provider的invariantName:
Partial Public Class ORM
    Inherits DbContext

    ' 原有无参构造函数保留即可
    Public Sub New()
        MyBase.New()
        Database.SetInitializer(New NullDatabaseInitializer(Of ORM))
    End Sub

    ' 修改带参构造函数,第二个参数传入Jet的invariantName
    Public Sub New(con As Common.DbConnection)
        MyBase.New(con, "JetEntityFrameworkProvider")
        Database.SetInitializer(New NullDatabaseInitializer(Of ORM))
    End Sub

    ' ... 其余代码保留
End Class
  • 补全app.config的配置节声明
    你当前的app.config缺失entityFramework的配置节注册,必须放在configuration节点下的第一个位置,完整配置如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!-- 缺失的配置节必须放在最顶部 -->
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false" />
  </configSections>
  <entityFramework>
    <providers>
      <provider invariantName="JetEntityFrameworkProvider" type="JetEntityFrameworkProvider.JetProviderServices, JetEntityFrameworkProvider" />
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="JetEntityFrameworkProvider"/>
      <add invariant="JetEntityFrameworkProvider" name="Jet Entity Framework Provider" description="Jet Entity Framework Provider"
        type="JetEntityFrameworkProvider.JetProviderFactory, JetEntityFrameworkProvider"/>
    </DbProviderFactories>
  </system.data>
</configuration>
  • 确认运行时依赖安装
    根据你的程序生成架构(x86/x64)安装对应版本的Microsoft Access Database Engine 2010 可再发行组件,避免Jet Provider找不到底层Access驱动。
  • 清理缓存重新编译
    关闭VS后删除项目根目录下的bin、obj文件夹,重启VS重新编译即可解决配置缓存导致的加载失效问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 12:45:02