升级Office365后无法用EF Core+VS2019搭建Access数据库脚手架
解决32位VS2019搭配64位Office365时EF Core Access脚手架失败问题
核心问题
升级到64位Office365后,32位Visual Studio 2019无法调用64位Access DAO组件,导致EF Core Jet脚手架工具因架构不兼容报错,且受Office Click-To-Run限制无法安装32位Access Runtime。
可行解决方案
1. 使用64位.NET Core CLI执行脚手架命令
VS的包管理器控制台是32位进程,无法加载64位DAO组件,改用独立的64位CLI工具可绕过该限制:
- 确认已安装64位.NET Core 3.1 SDK(与项目EF Core版本匹配)
- 打开系统的x64命令提示符(开始菜单搜索“命令提示符”,右键选择“以管理员身份运行”;若用Windows Terminal则选择x64配置文件)
- 导航到项目根目录(包含.csproj文件的文件夹)
- 执行脚手架命令:
dotnet ef dbcontext scaffold "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=你的数据库路径.mdb" EntityFrameworkCore.Jet --output-dir Models
- 可选参数说明:
--output-dir Models指定实体类生成到Models文件夹,可按需调整。
2. 手动生成实体类与DbContext
若CLI方案仍有问题,可绕过脚手架工具手动实现:
- 在Access中打开目标数据库,将各表结构导出为CSV或SQL脚本
- 根据表结构手动创建对应实体类(匹配字段类型、主键等约束)
- 手动配置DbContext:
using Microsoft.EntityFrameworkCore; public class YourDbContext : DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseJet(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=你的数据库路径.mdb"); } public DbSet<YourEntity> YourEntities { get; set; } // 添加其他对应表的DbSet }
3. 临时注册32位DAO组件(风险提示)
此方案可能与64位Office365冲突,仅作为临时应急手段:
- 下载32位Access Runtime安装包,解压提取
dao360.dll文件 - 打开32位命令提示符(路径:C:\Windows\SysWOW64\cmd.exe)
- 执行注册命令:
regsvr32 "解压路径\dao360.dll"
- 完成脚手架生成后,执行
regsvr32 /u "解压路径\dao360.dll"注销组件,避免与64位Office冲突
关键说明
- 在VS中直接运行64位项目的脚手架时,因PM控制台是32位进程,必然触发
BadImageFormatException,这是架构不兼容导致的,必须使用外部64位CLI工具。 - Office365 Click-To-Run版本会阻止安装其他版本的Access Runtime,不建议强行安装32位运行时,避免破坏现有Office环境。
内容的提问来源于stack exchange,提问作者RFBomb
相关产品推荐
相关产品推荐

