最近在学习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包

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

更多推荐

运行所选代码生成器时出错-ASP.Net Core MVC添加基架控制器报错