.NET6执行dotnet ef database update遇方法未找到错误求助
解决方法
1. 统一EF Core所有相关包的版本
你遇到的Method not found错误核心原因就是EF Core包版本不兼容:Microsoft.EntityFrameworkCore.SqlServer用了7.0.0,其他EF包却是6.0.10,.NET 6.0环境下混用7.x版本的EF包必然会出现API不匹配问题。
打开你的Project.csproj文件,把所有EF Core相关的NuGet包版本统一为6.0.10(和你其他EF包版本一致,也适配你的.NET 6.0.402 SDK):
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.10" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.10"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.10" />
修改后执行dotnet restore命令,确保所有包都更新到统一版本。
2. 修复手动修改的迁移文件
手动修改[serial]_[name].designer.cs很容易破坏迁移和模型的元数据一致性,建议重新生成迁移:
- 先删除项目根目录下的
Migrations文件夹(如果里面的迁移记录不需要保留的话) - 重新执行
dotnet ef migrations add [你的迁移名称],让EF自动生成匹配当前模型的迁移文件,不要手动修改designer.cs文件。
如果需要保留之前的迁移记录,至少要删除你手动修改过的那个迁移文件,然后重新生成对应的迁移。
3. 清理构建文件并重建应用
在macOS上,清理旧的构建缓存和DLL文件的步骤:
- 手动删除项目目录下的
bin和obj两个文件夹(这两个是构建输出和中间缓存目录,旧版本的DLL都在这里) - 执行命令
dotnet clean,自动清理项目的构建缓存 - 最后执行
dotnet build重新构建项目,确保所有依赖和代码都是最新的
完成以上步骤后,再执行dotnet ef database update应该就能正常运行了。
内容的提问来源于stack exchange,提问作者mleng
相关产品推荐
相关产品推荐

