135

我试图在一个新项目中运行命令“Enable-Migrations”,我得到了消息:

PM> Enable-Migrations
The term 'Enable-Migrations' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verif
y that the path is correct and try again.
At line:1 char:18
+ Enable-Migrations <<<< 
    + CategoryInfo          : ObjectNotFound: (Enable-Migrations:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

但在所有其他项目中,该命令运行得很好。

为什么会这样?

顺便说一句,我正在使用 VS2010 Professional SP1

编辑:我重新安装了命令:Install-Package EntityFramework -IncludePrerelease ,问题就消失了。

4

26 回答 26

98

我用命令重新安装:Install-Package EntityFramework -IncludePrerelease问题就消失了。

于 2012-05-07T17:17:33.317 回答
86

只需重新启动 Visual Studio 即可为我工作。无需安装软件包等。

于 2015-02-11T23:17:25.347 回答
33

出现此问题是因为我们没有安装实体框架。请使用以下命令安装实体框架。

Install-Package EntityFramework -IncludePrerelease

安装后,在包管理器控制台默认项目下拉菜单中选择项目。

确保项目中至少有一个类继承自数据上下文,否则使用以下类:

public class MyDbContext : DbContext
    {
        public MyDbContext()
        {
        }
    }

如果我们不这样做,我们会得到另一个错误:

No context type was found in the assembly

完成这些事情后你可以运行

enable-migrations
于 2017-05-20T12:04:58.490 回答
28

我对 VS 2019 Preview、.Net Core 和 EntityFramework Core 也有同样的问题。

原来我必须通过 NuGetMicrosoft.EntityFrameworkCore.ToolsMicrosoft.EntityFrameworkCore.Design. 一旦完成,它就像一个魅力。

于 2019-02-19T08:51:12.577 回答
17

以管理员权限重新启动 Visual Studio为我解决了这个问题。

于 2015-05-10T06:01:43.767 回答
15

Make sure you are running Visual Studio as a administrator.

于 2013-04-16T16:28:58.497 回答
10

首先“Install-Package EntityFramework -IncludePrerelease”,然后以管理员身份重新启动 Visual Studio一起为我工作。

于 2013-07-17T18:40:15.900 回答
5

我遇到了同样的问题,我尝试了其他人提供的大多数解决方案,但它对我来说是通过以下步骤工作的。我有VS 2017。

脚步:

Install-Package EntityFramework -IncludePrerelease

然后创建一个类

public class MyDBContext : DbContext { public MyDBContext() { } }

并在最后执行

Enable-Migrations -EnableAutomaticMigrations

什么对我不起作用:

: 重启VS。

:只有“Enable-Migrations”命令,没有-EnableAutomaticMigrations。

:恢复或更新 Nuget 包管理器。

我最初的错误是

/* 术语“enable-migration”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 line:1 char:1 + enable-migration + ~~~~~~~~~~~~~~~ ~~ + CategoryInfo : ObjectNotFound: (enable-migration:String) [], CommandNotFoundException */

于 2018-08-12T01:26:45.267 回答
4

我刚刚在asp.net core VS2019中遇到了同样的问题

这解决了它:

Install-Package Microsoft.EntityFrameworkCoreInstall-Package
Install-Package Microsoft.EntityFrameworkCore.Tools

不要忘记将包管理器控制台中的默认项目设置为您的数据库项目,以防万一。

在执行迁移时,默认项目似乎也发挥了作用。在稍后的步骤中,它有助于将其安装到我的主要启动项目(不是 EF 数据库项目):

Install-Package Microsoft.EntityFrameworkCore.Design
于 2020-04-07T23:21:54.593 回答
3

在 Visual Studio 2012 中,我遇到了同样的错误。必须卸载 NuGet(工具 > 扩展和更新 > 已安装 > 全部:NuGet 包管理器:卸载按钮)。然后关闭 Visual Studio。然后重新打开 Visual Studio 并重新安装 NuGet(工具 > 扩展和更新 > 在线 > Visual Studio 库:NuGet 包管理器:下载按钮)。然后在以下窗口中:单击安装按钮,然后单击关闭按钮。然后关闭并重新打开 Visual Studio。

于 2013-08-13T19:07:41.017 回答
2

为我解决此症状(VS2013)的方法是卸载然后使用 Nuget 重新安装 EF 包。csproj 文件中的差异改变了这一点......

<Reference Include="EntityFramework">
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

……进入这个……

<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages\EntityFramework.6.1.1\lib\net45\EntityFramework.dll</HintPath>
</Reference>

我还不完全明白为什么,但至少它起作用了。

于 2014-12-11T03:59:57.683 回答
2

在 .NET Core 中,通过在包管理器控制台中输入以下内容,我能够达到与接受的答案中描述的相同的分辨率:

Install-Package EntityFramework.Core -Pre
于 2016-06-12T14:18:39.257 回答
2

Enable-Migrations -EnableAutomaticMigrations

于 2016-10-03T17:42:58.650 回答
2

以管理员身份运行 vs =>> 打开项目

-> On the Package manager Console

Enable-migration
add-migration migrationName
update-database
于 2019-05-07T14:49:47.103 回答
1

我遇到了同样的问题,我发现这是因为项目路径中的某些字符,如 [ 或 ] 我更正了项目路径,它工作正常!

于 2014-11-27T11:32:46.490 回答
1

由于我已经有了迁移文件夹,我重新启动了 Visual Studio 并在包管理器控制台中运行 Update-Database -verbose。这对我有用

于 2017-03-28T02:18:07.000 回答
1

我尝试了上述所有建议,但对我没有任何效果,然后我更新Nuget Package Manager并成功了..

于 2017-12-19T17:59:52.843 回答
1
  1. 使用以下命令将实体框架安装到当前项目: PM> Install-Package EntityFramework -IncludePrerelease

  2. 在 Model 文件夹中添加一个类“MyDBContext”,如下所示:

    公共类 MyDBContext : DbContext { public MyDBContext() { } }

  3. 现在使用以下命令为当前项目启用迁移: PM> enable-migrations

于 2018-07-29T20:25:56.280 回答
0

在 VS 2013 中,尝试安装 UPDATE 1(RC1) 并解决问题。

于 2014-04-26T02:14:21.810 回答
0

这些解决方案都不适合我。我的解决方案是删除packages/EntityFramework.6.1.3Restore NuGet Packages

我注意到它packages/EntityFramework.6.1.3/tools/EntityFramework.psd1不见了,所以这是一个可能的原因。虽然我不知道它是如何被删除的。

于 2016-12-12T05:07:59.233 回答
0

检查配置部分“entityFramework”是否存在并在您的.config文件中描述

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/></configSections>

        <entityFramework>
            <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
            <providers>
                <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
            </providers>
        </entityFramework>
于 2017-08-21T15:22:03.097 回答
0

我在解决方案中有多个项目,但我设置了正确的默认项目,所以我认为它应该可以工作。

最后,我不得不将-StartupProject MyProjectName选项添加到命令中

于 2016-02-16T15:05:44.070 回答
0

downgrade to 6.2 helped me.
.NET Framework version 4.6.1
Project in old format(non .NET Standard)
Visual Studio should be open with Admin rights for initial migration.
I guess EF with version above 6.2 require latest .NET Framework.

于 2020-05-20T07:38:41.133 回答
0

检查实体框架的版本。

如果是 6.3,将其降级到 6.2,它应该可以正常工作

于 2019-10-07T11:28:39.863 回答
0

如果您创建 MVC Web 项目 您应该在创建项目时选择身份验证。默认情况下未选中。 在此处输入图像描述

于 2020-05-05T05:05:36.910 回答
-4

检查项目是否在解决方案资源管理器窗口中打开。

这可能是您的问题的原因。

于 2016-09-15T00:51:08.640 回答