EF6添加迁移创建数据库报CoreTypeMappingParameters方法未找到错误
报错原因
该Method not found异常属于EF Core生态下的典型版本不兼容问题:项目中引用的EF Core核心库、数据库提供程序、第三方EF扩展包、本地EF迁移工具之间版本不匹配,导致运行时无法找到对应签名的CoreTypeMappingParameters构造函数,最终在迁移执行最后阶段抛出异常。
解决步骤
- 统一所有官方EF Core包版本
检查项目引用的所有官方EF相关包,确保版本号完全一致,常见需要对齐版本的包包括:Microsoft.EntityFrameworkCore- 对应数据库提供程序包(如SqlServer、Sqlite、InMemory等官方提供程序)
Microsoft.EntityFrameworkCore.ToolsMicrosoft.EntityFrameworkCore.Design
禁止出现主包为7.0版本、数据库提供程序仍为6.0版本的混装情况,所有包大版本必须完全对齐。
- 校验第三方EF扩展包兼容性
如果项目中使用了第三方数据库提供程序(如Pomelo.MySql、Npgsql.PostgreSql)、或者其他基于EF Core实现的扩展组件,需要确认组件标注的兼容EF Core版本和你当前项目使用的EF Core版本完全匹配。例如Pomelo.EntityFrameworkCore.MySql 6.0.x系列仅支持EF Core 6.0,强行搭配EF Core 7.0使用就会触发该构造函数缺失错误。 - 清理残留编译文件重新生成
版本对齐完成后:- 手动删除项目根目录下的
bin、obj文件夹 - 执行
dotnet restore命令重新还原依赖包 - 重新生成解决方案
- 手动删除项目根目录下的
- 对齐本地dotnet-ef全局工具版本
执行dotnet ef --version查看本地全局安装的EF命令行工具版本,如果和项目引用的EF Core版本不一致,执行对应版本更新命令,例如项目用6.0版本就执行dotnet tool update --global dotnet-ef --version 6.0.*,避免工具和项目类库版本不兼容。
原报错信息
Method not found: 'Void CoreTypeMappingParameters..ctor(System.Type, Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer, Microsoft.EntityFrameworkCore.ChangeTracking.ValueComparer, System.Func`3<Microsoft.EntityFrameworkCore.Metadata.IProperty,Microsoft.EntityFrameworkCore.Metadata.IEntityType,Microsoft.EntityFrameworkCore.ValueGeneration.ValueGenerator>)'.
附提问者提供的Program.cs文件截图:
内容的提问来源于stack exchange,提问作者csharper
相关产品推荐
相关产品推荐

