最近在学习ASP.NET Core,使用的IDE是Visual Studio 2019 Community,基于MVC,按照微软的官方教程,在新添加控制器时报错,网上查了一些方法,也清理项目了,也重新生成了,也重启IDE了,但问题依旧。
弹出的问题是统一的报错信息,但详细情况不一样。错误信息是“运行所选代码生成器时出错”,具体情况如下图:

显示的是
“Method 'Create' in type
'Microsoft EntityFrameworkCore.SqlServer.Query.Internal.SqlServerSqlTranslatingExpressionVisitorFactory'
from assembly
'Microsoft.EntityFrameworkCore.SqlServer,Version=3.1.12.0,Culture=neutral,PublicKeyToken=adb9793829ddae60'
does not have an implementation”
抽出主要单词就是Create函数没有找到实现,出错了,错误原因是项目安装的EntityFramework的NuGet包版本不一致,解决方法是:
方法一:工具——NuGet包管理器——管理解决方案的NuGet程序包——已安装,保证所有EntityFrameworkCore的包版本一致,如图:

方法二:使用命令行安装EntityFrameworkCore.SqlServer包,后边直接添加控制器,VS会自动安装需要的NuGet包。
工具——NuGet包管理器——NuGet包管理器控制台,命令是Install-Package Microsoft.EntityFrameworkCore.SqlServer,该命令不区分大小写。
按照微软教程,该命令需要在创建数据库上下文类(***DbContext类)之前运行添加。
会根据新建项目时选择的版本号来选择NuGet包的版本并安装,下图是我又新建的一个基于5.0版本的项目,命令行自动安装的全是5.0的NuGet包

至此,再以“新搭建基架的项目”添加控制器,不再报错。

本文介绍了在使用Visual Studio 2019 Community学习ASP.NET Core MVC时遇到的控制器添加错误,错误源于EntityFrameworkCore的NuGet包版本不一致。通过检查并确保所有相关包版本一致或通过NuGet包管理器控制台安装指定版本的包解决了问题。此方法对于避免依赖冲突和确保项目稳定运行具有重要意义。
962





