使用EntityFrameworkCore.Jet连接MS Access数据库时遇TypeLoadException错误
解决EntityFrameworkCore.Jet的TypeLoadException(get_Info方法未实现)问题
这个错误我之前帮同事排查过好几次,核心原因都是EntityFrameworkCore.Jet包和Microsoft.EntityFrameworkCore包的版本不匹配导致的。你遇到的JetOptionsExtension.get_Info未实现的错误,本质就是两个库的版本对不上,底层接口无法兼容。
下面是具体的解决步骤:
1. 明确版本匹配规则
EntityFrameworkCore.Jet严格绑定EF Core的主版本号,必须保证两者版本完全对齐:
- EF Core 2.2.x → EntityFrameworkCore.Jet 2.2.x
- EF Core 3.1.x → EntityFrameworkCore.Jet 3.1.x
- EF Core 5.x+ → EntityFrameworkCore.Jet 5.x+(注意:.NET Framework 4.7.2最高支持到EF Core 3.1,因为EF Core 5+仅适配.NET Core/.NET 5+)
你之前尝试了不同的.NET版本,但没同步调整Jet包的版本,所以错误会持续出现。
2. 重新安装匹配的NuGet包
先卸载现有不匹配的包,再重新安装对应版本:
针对.NET Framework 4.7.2(推荐用EF Core 3.1)
打开NuGet包管理器控制台,执行:
# 卸载旧包 Uninstall-Package EntityFrameworkCore.Jet -Force Uninstall-Package Microsoft.EntityFrameworkCore -Force # 安装匹配的3.1版本 Install-Package Microsoft.EntityFrameworkCore -Version 3.1.30 Install-Package EntityFrameworkCore.Jet -Version 3.1.1
如果你坚持使用EF Core 2.2
Uninstall-Package EntityFrameworkCore.Jet -Force Uninstall-Package Microsoft.EntityFrameworkCore -Force Install-Package Microsoft.EntityFrameworkCore -Version 2.2.6 Install-Package EntityFrameworkCore.Jet -Version 2.2.0
3. 检查ACE驱动与项目平台的匹配性
虽然这个错误不是连接问题,但后续运行可能会遇到驱动相关问题:
- 若安装的是32位ACE驱动,需要在项目属性→生成→勾选“首选32位”(针对Any CPU平台)
- 若安装的是64位ACE驱动,确保项目平台设置为x64,不要勾选“首选32位”
验证你的代码
你的DataContext和Program代码本身是没问题的,版本匹配后应该能正常读取Companies表的数据。
内容的提问来源于stack exchange,提问作者Aleksandar Randjelovic
相关产品推荐
相关产品推荐

