【问题标题】:The term 'Update-Database' is not recognized as the name of a cmdlet术语“更新数据库”未被识别为 cmdlet 的名称
【发布时间】:2012-03-29 07:40:21
【问题描述】:

我使用的是 EF5 beta1,虽然我之前能够运行“更新数据库”。现在我关闭了 Visual Studio,我无法让它运行。我收到以下错误:

“更新数据库”一词未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。 在行:1 字符:16 + 更新数据库

我尝试重新安装 EF5b1,虽然成功(已安装),但“更新数据库”仍然无法正常工作。

谁能帮忙???

【问题讨论】:

  • 昨天我在使用不同的 cmdlet 时遇到了类似的问题,并且完全重新启动系统帮助...
  • 不需要重启。执行包还原后我们不运行 init.ps1 脚本(这就是找不到该命令的原因)。只需退出并重新启动 VS(或卸载/重新加载项目)。
  • 我今天遇到了这种情况。我为一个团队项目打开了一个 repo,它需要恢复一些包。还原后,update-databaseadd-migration 命令将不起作用。重新启动 Visual Studio 修复它。

标签: entity-framework ef-code-first entity-framework-migrations entity-framework-5


【解决方案1】:

如果您使用实体框架:

错误信息:

"错误消息(来自 PMC 中的 Update-Database 命令): 术语“更新数据库”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。"

解决方案:

退出 Visual Studio。重新打开项目并重试。

更多信息请访问:Advanced Entity Framework 6 Scenarios for an MVC 5 Web Application (12 of 12)

【讨论】:

  • VS 开发团队应该为此类问题提供刷新 VS 按钮 :)
  • @sohaibjaved 对于某些问题,重启 VS 是不够的,需要清理一些目录,如 Visual Studio 2015 extremely slow 所示。仅供参考...
  • 我不知道重启visual studio解决了多少问题
【解决方案2】:

恢复 NuGet 包对我没有帮助。

我不得不重新安装包管理器 - https://visualstudiogallery.msdn.microsoft.com/4ec1526c-4a8c-4a84-b702-b21a8f5293ca

【讨论】:

    【解决方案3】:

    我通过卸载并重新安装 Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.Tools 解决了这个问题

    【讨论】:

    • 如果您使用的是 EF Core,这是正确的答案。或者至少,对我来说,问题是 Microsoft.EntityFrameworkCore.Tools 没有安装。
    【解决方案4】:

    解决方案是关闭包管理器控制台,关闭 Visual Studio,然后重新打开它们。

    大部分时间重启也有效,但并非总是如此。

    【讨论】:

    • 通常只需要退出重启VS即可。在原始问题中查看我的 cmets。在极少数情况下,您可能需要退出/重新启动 VS 两次。
    • 刚刚遇到问题并重新启动了 Visual Studio,一切又恢复了。谢谢。
    • 感谢您提供有效的解决方案,即使不是糟糕的解决方案。这似乎是我尝试过的一百万件事中的全部。
    • 是的,当然。这就是解决方案。合法的解决方案。谢谢微软!
    • 我在我的数据项目上安装了 "Microsoft.EntityFrameworkCore.Tools" Version="3.1.0" 并在我的主要 Web 项目上安装了 "Microsoft.EntityFrameworkCore.Design" Version="3.1.0",即为我解决了问题。
    【解决方案5】:

    大多数情况下,这些 beta 版本存在一些问题,如果 Entity Framework 无法加载,并且如果您在全局安装 Microsoft.EntityFrameworkCore.Tools 也会发生这种情况。尝试将其本地安装到您的项目中 .在解决问题之前,您可以尝试这些步骤。请记住,此方法不是解决问题,而是另一种方法。

    1. cd 进入你的项目目录。不是项目目录的 sln 目录。
    2. 然后dotnet ef 确定您已正确安装实体框架。
    3. 然后使用dotnet ef migrations add "ReplaceThisWithSomeText" 命令。这将创建新的迁移。
    4. 然后使用dotnet ef database update 更新数据库。

    Migrations Overview. This will helps too..

    Windows commands - cd

    (这是针对 EFCore 项目的)

    【讨论】:

      【解决方案6】:

      就我而言,我做了以下事情: - 通过单击包管理器控制台顶部的“恢复”按钮恢复丢失的 NuGet 包 - 重新启动 Visual Studio - 运行update-database

      【讨论】:

        【解决方案7】:

        安装 Microsoft.EntityFrameworkCore.Tools 为我解决了这个问题,使用了 nuget 包

        【讨论】:

          【解决方案8】:

          我在 VS 2019 中使用 EntityFramework 6.3.0 的现有项目遇到了这个问题。这个项目在一段时间内对它进行了一些奇怪的版本更改,但没有任何东西可以让它工作。我相信我尝试了此处列出的所有建议,但都没有成功。

          最后,更新到 EntityFramework 的预发布版本(当前为 6.4.0-preview3-19553-01)确实解决了这个问题,方法是在包管理器控制台中运行:Update-Package EntityFramework -prerelease。我希望当这个版本在接下来的几周内发布时它会正常工作。

          【讨论】:

            【解决方案9】:

            在我的情况下,重新启动 Visual Studio (很多次) 不起作用,然后当我在其他地方寻找时,我在输出终端上发现了一条消息:

            当前的 .NET SDK 不支持面向 .NET Core 2.2。任何一个 以 .NET Core 2.1 或更低版本为目标,或使用 .NET SDK 的版本 支持 .NET Core 2.2。

            于是我安装了所需版本的 .NET Core,命令运行成功。

            【讨论】:

              【解决方案10】:

              对于使用 .Net Core 和 EntityFrameworkCore 的任何人:

              您需要安装Microsoft.EntityFrameworkCore.Tools 软件包来解决此问题。

              在此处阅读更多信息:https://docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell

              【讨论】:

                【解决方案11】:

                就我而言:

                • 重新加载项目没有帮助
                • 重启 VS 没有帮助
                • 重新启动计算机没有帮助
                • 重新安装 EF 没有帮助

                但我发现了一个 article,建议使用 PM Conole 手动导入缺少的 EF 包:

                Import-Module .\packages\EntityFramework.X.X.X\tools\EntityFramework.psm1

                这个解决方案解决了我的问题。

                【讨论】:

                  【解决方案12】:

                  在我不小心使用 Visual Studio 2015 而不是 2017 打开了 Visual Studio 解决方案后,我开始遇到同样的问题。该项目在那次事故之前运行良好。这是一个使用 EF 5.0 而不是 EF Core 的旧项目。

                  我尝试了所有建议 - 无数次重新启动 Visual Studio,清理 NuGet 缓存,删除包文件夹中的所有内容,为项目重新安装 EF 5 - 不好,无法识别添加迁移。如果我将 EF 升级到 6,它会开始识别命令,但我还不想升级。所以,当我恢复到 EF 5 时,问题又回来了。

                  最终拯救我的唯一一件事是做以下事情:

                  • 关闭 Visual Studio
                  • 从包文件夹中删除所有内容
                  • 删除解决方案根目录中的 .vs 文件夹。此文件夹通常是隐藏的,您必须打开显示隐藏文件和文件夹设置或检查文件夹查看选项卡中的隐藏项目
                  • 启动 Visual Studio 并打开您的解决方案。它会要求恢复 NuGet 包,同意它。

                  现在 EF 命令终于又开始工作了。

                  【讨论】:

                    【解决方案13】:

                    对我来说,简单的解决方法是确保更新和数据库之间有一个破折号,如下所示:update-database 并使用小写。这可能是巧合,但是当我在数据包管理器控制台中执行此操作时,数据库实际上已更新,并且我收到了 done 消息,而不是 not recognized as the name of a cmdlet, function, script file 错误。

                    【讨论】:

                      【解决方案14】:

                      我在 Visual Studio 2015 中遇到了这个问题,并通过更新 Nuget 版本解决了它。

                      工具 -> 扩展和更新 -> 更新 -> Visual Studio 库

                      【讨论】:

                        【解决方案15】:

                        只需重新启动 Visual Studio,即可解决问题。对我有用。

                        【讨论】:

                        • 重启我的电脑如何解决这个问题真的很有趣
                        【解决方案16】:

                        我通过更新包管理器控制台解决了。

                        我没有在包管理器控制台中获得更新数据库。然后我重新启动了几次。同时重新启动 Windows。

                        然后我从nuget下载新的,然后就解决了。

                        【讨论】:

                          【解决方案17】:

                          对我来说,我的项目中没有安装 EntityFramework 核心(因为我从空白项目开始)。所以安装 EntityFramework 包解决了这个问题。有时如果 EntityFramework 安装失败,然后尝试一个一个安装单个包

                          例如

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

                          【讨论】:

                            【解决方案18】:

                            我发现这是由于包损坏。我已经安装了 Automapper。当我尝试安装另一个包时,很明显这个包已损坏。

                            删除损坏的包为我解决了这个问题。

                            然后您可以重新安装 automapper。问题出在 5.4 版上,我现在很高兴使用 6.0。

                            【讨论】:

                              【解决方案19】:

                              如果其他答案不起作用(VS 2017):清除 NuGet 缓存,重新启动 VS,然后恢复包。

                              【讨论】:

                                【解决方案20】:

                                如果没有正确安装 EF 工具,您将收到此错误。

                                在 Nuget 包管理器中尝试以下命令 //卸载和安装相同版本的EF

                                Update-Package "EntityFramework" -reinstall
                                

                                如果您仍然面临同样的问题。 创建一个新的 Web 项目并在 nuget 中运行以下命令。

                                (注意:无需在同一解决方案中创建新项目或 相同的位置。)

                                // 这会将 EF 更新到最新版本(包括工具) // 如果要使用特定版本,请使用-version 标志。

                                Update-Package "EntityFramework"
                                

                                完成后,检查您的原始项目,然后您可以删除新创建的项目。

                                【讨论】:

                                • 是的!谢谢 =) 我只安装了 EntityFramwork、EF.Design、EF.SqlServer 和 EF.SqlServer.Design。
                                【解决方案21】:

                                对我来说,问题在于 Nuget 版本

                                1. 卸载 Nuget 包管理器。
                                2. 重新启动 Visual Studio。
                                3. 已安装新版本的 Nuget 包管理器。
                                4. 然后重新启动 Visual Studio。

                                【讨论】:

                                • 对我来说就是这种情况,但我只需要在扩展中更新 nuget 并更新
                                • 这对我有用,卸载了 nuget 包管理器,重新安装了 nuget 包管理器,重新启动了 Visual Studio,卸载了 EntityFramework,重新安装了 EntityFramework
                                【解决方案22】:

                                对我来说,问题在于 Nuget 版本。

                                我删除并重新安装了 Nuget,然后重新启动了 Visual Studio,然后一切都开始工作了。

                                【讨论】:

                                  【解决方案23】:

                                  有时当我加载 VS 时,我会在我的包管理器控制台中看到这个:

                                  值不能为空。

                                  参数名称:path1

                                  我还不知道是什么原因造成的,但似乎在 Powershell 控制台启动期间出现了问题,这会中断特定模块的注册,例如 EF Powershell 扩展。但是,您可以手动加载它:

                                  Import-Module .\packages\EntityFramework.6.1.1\tools\EntityFramework.psm1
                                  

                                  确保将 6.1.1 替换为当前版本的 Entity Framework。

                                  【讨论】:

                                  • 谢谢!唯一对我有用的解决方案。但是,对于将 EF 6.1.3 与 VS 2015 一起使用的任何人,EntityFramework.psm1 中存在一个错误,这里有一个可用的补丁 stackoverflow.com/a/30062684/1267778
                                  【解决方案24】:

                                  Just ReOpen Visual Studio 适合我

                                  【讨论】:

                                    【解决方案25】:

                                    重新安装 nuget 包为我解决了这个问题

                                    即执行

                                    Install-Package EntityFramework -Version 5.0.0
                                    

                                    在包管理器中

                                    【讨论】:

                                    • 这对我有用。我从事的项目使用了 EF,我自动假设该软件包已安装。结果,事实并非如此。开发人员只是直接引用了 EF dll。必须在项目中安装 EntityFramework 包,Update-Database cmd 才能工作。
                                    • 这个答案似乎不太可能有帮助,但它拯救了我的一天。谢谢,
                                    • 今天使用 Fluent API 等与 FK 搏斗,不知何故 EntityFramework 不断下降。在这些方面对我真正有用的是再做一个Update-Package -Reinstall EntityFramework
                                    • 为我重新安装并重新启动。只是重新安装不工作,只是重新启动也不工作)
                                    【解决方案26】:

                                    当您直接从文件资源管理器打开项目时,似乎会发生此问题。尝试先启动 VS,然后打开项目 - 为我工作。我猜这是关于路径的访问。

                                    【讨论】:

                                    • 重启几次后仍未解决,这有助于解决我的问题!
                                    【解决方案27】:

                                    我也遇到了同样的问题,它的根源在于我的路径名,我的路径上有一个带直括号的目录名,如下所示:C:\[PROJ]\TestApp

                                    当我删除括号,C:\PROJ\TestApp,它开始工作得很好......

                                    【讨论】:

                                    • 通常只需要退出重启VS即可。在原始问题中查看我的 cmets。
                                    • @RickAndMSFT 这更接近于“只是”重启 VS 的更好解决方案。
                                    • @Antonio 即使我遇到了同样的问题,您的解决方案也对我有用。
                                    猜你喜欢
                                    • 2021-12-22
                                    • 2019-10-12
                                    • 2017-12-11
                                    • 2021-12-09
                                    • 2020-02-25
                                    • 2020-04-17
                                    • 2018-09-30
                                    • 1970-01-01
                                    • 1970-01-01
                                    相关资源
                                    最近更新 更多