EntityFramework Scaffold-DBContext未被识别。

3

我对.net的世界非常陌生,正在尝试将我的一个应用程序移植到这个平台上,因此我一直在通过使用Code First和实体框架连接到数据源来进行教程学习,并使用CRUD操作处理数据。

现在我需要尝试反向工程我的现有数据库,因为我想尝试使用Database First方法,这将是我们最终使用的方法,因为它已经存在。然而,当我在包管理器控制台中使用Scaffold-DBContext命令时,我收到了"Scaffold-DBContext未被识别"的错误信息...

经过几天的重新安装框架、更新powershell、确定csproj文件的位置以确保包含在框架中的工具的引用正确,以及清除nuget缓存(基本上是我能找到的任何信息来尝试让这个工作),我意识到如果我创建一个关闭身份验证的新项目,则Scaffold-DBcontext命令似乎可以正常工作。是否有我需要安装的参考或包,以便在选择创建将具有身份验证的项目时使其正常工作?

谢谢


我在PMC中运行某些命令时也遇到了问题。我发现经常将cd切换到包含您的.csproj文件(或任何您拥有的项目文件)的目录中会有所帮助。 - Andrew S
可能是由于工具包中的init.ps1脚本未能正确运行导致的问题。尝试再次删除和安装包,并重新启动VS。最坏的情况下,手动运行init.ps1。 - Smit
1个回答

10

实际上是个奇怪的错误,我一直使用下面的方法,在所有情况下都有效。为了在SqlServer中使用Scaffold-DBContext,你需要安装3个包:

Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.SqlServer.Design
Microsoft.EntityFrameworkCore.Tools

然后在“程序包管理器控制台”中使用以下命令:

Scaffold-DBcontext "your connection string" Microsoft.EntityFrameworkCore.SqlServer

如果这种方法不起作用,则项目中似乎出现了一些问题,请使用如下-verbose标志:

Scaffold-DBcontext "your connection string" Microsoft.EntityFrameworkCore.SqlServer -verbose

如果需要更多关于错误的信息。有时在包管理器控制台中输入简单的dotnet restore命令也会有所帮助。


嗨,我刚刚重新创建了一个启用身份验证的新项目,它可以正常工作。真的很奇怪,因为我没有改变任何东西,而且它们是我一遍又一遍重新安装的相同软件包(我正在按照这些先决条件的教程进行操作)。感谢您回复我的最初问题。 - JK36

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接