ASP.NET Code First执行Update-Database无法更新数据库问题求助
解决方案
问题根因
Microsoft.EntityFrameworkCore.Design 从5.0版本开始停止对.NET Framework系列框架的支持,仅兼容.NET Core 3.1以上/.NET 5+的核心框架,所以你在.NET Framework 4.7.2项目中安装5.0.9版本的包会触发兼容性报错。
可选解决方案
方案1:降级EF Core全家桶到兼容版本
EF Core 3.1是最后一个官方支持.NET Framework的LTS版本,你需要将项目内所有EF Core相关依赖统一更换为3.1.x的最新稳定版,涉及包包括:Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.Tools、你使用的对应数据库驱动包(例如Microsoft.EntityFrameworkCore.SqlServer)
所有包版本完全对齐后,重新执行Update-Database命令即可正常执行迁移。方案2:拆分迁移代码到兼容类库(保留现有项目框架)
如果你需要使用高版本EF Core的特性,可以调整项目结构:- 新建一个.NET Standard 2.0类库项目,将DAL层的DbContext、实体类、迁移相关代码全部迁移到该项目
- 原有.NET Framework 4.7.2项目引用该类库即可
- 执行迁移命令时,新增一个临时的.NET 6+空控制台项目作为启动项目,执行命令时指定参数:
Update-Database -StartupProject [临时控制台项目名称] -Project [存放DAL代码的.NET Standard类库名称]
方案3:升级项目目标框架
如果项目没有强依赖的.NET Framework专属组件,可以直接将项目目标框架升级为.NET 5+版本,即可直接安装对应版本的Microsoft.EntityFrameworkCore.Design包,无需其他额外配置。
注意事项
- 执行包管理控制台命令前,需确认控制台的默认项目选中的是存放DbContext的DAL层项目
- 同一项目内不允许混装不同版本的EF Core系列依赖,否则会出现依赖冲突报错
- 启动项目的配置文件内需要存在正确的数据库连接字符串,否则迁移命令仍会执行失败
内容的提问来源于stack exchange,提问作者Muhammad Abbas
相关产品推荐
相关产品推荐

