首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >术语“scaffold dbcontext”不被识别为cmdlet、函数、脚本文件或可操作程序的名称。

术语“scaffold dbcontext”不被识别为cmdlet、函数、脚本文件或可操作程序的名称。
EN

Stack Overflow用户
提问于 2016-09-12 16:08:50
回答 12查看 141.6K关注 0票数 185

当尝试使用asp.net核心构建支架时,请执行以下命令

代码语言:javascript
复制
scaffold-dbcontext "Data Source=(local);Initial
Catalog=MyDb;Integrated Security=True;"
Microsoft.EntityFrameworkCore.sqlserver -outputdir Models

给出了这个错误。

脚手架-dbcontext:术语“支架-dbcontext”不被识别为cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后再试一次。一行:1个字符:1个

  • Source=(本地);初始Catalog=MyDB;In .+~+ CategoryInfo : ObjectNotFound:(脚手架-dbcontext:String) [],CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

我尝试过here的解决方案,但它对我不起作用。

知道病因/治愈方法可能是什么吗?

EN

回答 12

Stack Overflow用户

发布于 2018-07-15 09:50:59

对我来说,在我也运行了Package控制台之后,它显然起了作用:

代码语言:javascript
复制
 Install-Package Microsoft.EntityFrameworkCore.Tools 

还要确保:

  • 具有其他依赖项(例如,Microsoft.EntityFrameworkCore.SqlServer.Design...)、Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.SqlServer、参考依据你的需要。
  • 在PM控制台的右上角选择正确的程序集作为命令的目标(我经常被忘记它……)

我遇到的另一个问题是:由于dbcontext位于单独的类库中,我遇到了以下错误:

无法找到名称为Microsoft.EntityFrameworkCore.SqlServer的提供程序集。确保指定的名称正确,并由项目引用。

我可以通过将类库设置为VS中的启动项目来修复这个问题(不要问为什么它看起来毫无意义,但它成功了)。

在后期编辑时,还有一些事情需要知道:不能对只获取.Net标准的类库运行Scaffold-DbContext,还必须在其中启用netcoreapp,否则Scaffold-DbContext会发出抱怨。要支持这两个目标,请编辑csproj以put:<TargetFrameworks>netcoreapp2.2;netstandard2.0</TargetFrameworks>而不是<TargetFramework>部分。

在所有这些之后,您将能够使用适当的参数和连接字符串运行Scaffold-DbContext命令行。

-- 2022更新--

我很高兴看到这个帖子仍然很有帮助,因为它得到了一些新的支持,但是没有命令行脚手架,VS的快乐用户有一个新的解决方案:您可以依赖扩展EF Core Power tools的追溯工程特性。

我从一段时间以来一直在我的所有新项目中使用它,我发现它比原始命令行强大得多,它允许您保存执行设置(这将避免使用自定义命令行创建.bat )。当然,这是你的选择。

票数 367
EN

Stack Overflow用户

发布于 2020-05-31 18:06:48

也有同样的问题。在我的例子中,我缺少了一些依赖项,所以请确保您有以下的依赖项:

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools

希望这能帮上忙。:)

票数 45
EN

Stack Overflow用户

发布于 2017-01-31 12:30:14

  1. 确保这在您的project.json文件“Microsoft.EntityFrameworkCore.Tools.DotNet”中可用:“1.0.0-预览3-最终”。

  1. 在包管理器控制台中运行命令

就这样起作用了

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39454545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档