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

执行Scaffold-DbContext报Method 'Create'无实现异常如何解决

环境与问题复现
  • 运行环境:Windows 10(版本10.0.19044,内部版本19044)
  • 目标项目:.NET Standard 2.0
  • 已安装EF相关NuGet包:
    已安装包列表
  • 执行的脚手架命令:
Scaffold-DbContext "Data Source=.\MSSQLSERVER2012;Initial Catalog=MbsAnalysisData;User Id=eflogin; Password=eflogin2" Microsoft.EntityFrameworkCore.SqlServer -output ModelsEF
  • 异常现象:控制台提示Build started... Build succeeded.后抛出System.TypeLoadException,具体内容为Method 'Create' in type 'Microsoft.EntityFrameworkCore.SqlServer.Scaffolding.Internal.SqlServerDatabaseModelFactory' from assembly 'Microsoft.EntityFrameworkCore.SqlServer, Version=2.2.2.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' does not have an implementation.
  • 补充背景:当前安装的Microsoft.EntityFrameworkCore.SqlServer 2.2.2在同解决方案下的MVC 5.0项目中可正常运行,怀疑问题与.NET Standard 2.0实例化限制有关。
根因说明

该异常与.NET Standard 2.0的框架能力限制无关,核心原因是EF Core相关程序集版本不匹配:
EF Core的设计时组件(脚手架、工具包)和数据库提供程序包强依赖同版本的核心库,当前项目中必然存在EF Core相关包版本混装的情况——要么是Microsoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Design/Microsoft.EntityFrameworkCore.Tools版本和SqlServer提供程序的2.2.2版本不一致,要么是包管理器控制台加载了其他项目(比如可正常运行的MVC 5.0项目)的不同版本EF Core程序集。
2.2.2版本的SqlServer提供程序中SqlServerDatabaseModelFactory类实现的Create方法,是对应2.2版本核心库定义的接口签名,一旦加载到其他版本的核心库,接口签名不匹配就会抛出该类型加载异常。

排查步骤
  • 检查包管理器控制台顶部的「默认项目」下拉选项,确保选中的是要生成模型的.NET Standard 2.0项目,而非解决方案中其他引用EF Core的项目。
  • 展开项目的依赖项-包节点,核对所有前缀为Microsoft.EntityFrameworkCore的包版本,确认是否存在2.x与3.x/5.x混装的情况。
  • 清除本地包缓存和编译残留:关闭Visual Studio后,删除项目根目录下的bin、obj文件夹,打开VS后执行Update-Package -reinstall重新还原所有包,排除旧版本DLL残留导致的加载错误。
解决方案

方案1:保留2.2.2版本(不推荐,2.2已停止支持)

如果暂时不想升级版本,将所有EF Core相关包统一固定为2.2.2版本即可:

  1. 卸载项目中所有已安装的Microsoft.EntityFrameworkCore开头的NuGet包
  2. 在包管理器控制台执行以下命令安装固定版本包:
Install-Package Microsoft.EntityFrameworkCore -Version 2.2.2
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.2
Install-Package Microsoft.EntityFrameworkCore.Design -Version 2.2.2
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.2.2
  1. 重新生成解决方案后,再执行脚手架命令。

方案2:升级到3.1 LTS版本(推荐)

EF Core 3.1是长期支持版本,完全兼容.NET Standard 2.0,不存在跨版本兼容问题:

  1. 卸载项目中所有旧版EF Core相关包
  2. 执行以下命令安装3.1系列最新补丁版本:
Install-Package Microsoft.EntityFrameworkCore -Version 3.1.32
Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.32
Install-Package Microsoft.EntityFrameworkCore.Design -Version 3.1.32
Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.32
  1. 重新生成解决方案后执行脚手架命令即可,3.1版本的脚手架逻辑与2.2基本一致,仅部分高级参数有调整,不影响常规表模型生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:36:27