包管理器控制台启用-仅在特定 VS 项目中发生迁移 CommandNotFoundException

我尝试在一个新项目中运行命令“ Enable-Migations”,我得到了这样的信息:

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专业 SP1

编辑: 我使用以下命令重新安装: < strong > Install-Package EntityFramework-IncludePrerelease 问题就解决了。

165962 次浏览

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

确保以管理员身份运行 VisualStudio。

首先“安装-包 EntityFramework-IncludePrerelease”,然后重新启动 VisualStudio 作为一个 管理员对我来说一起工作。

在 VisualStudio2012中,我也有同样的错误。必须卸载 NuGet (工具 > 扩展和更新 > 安装 > 全部: NuGet 包管理器: 卸载按钮)。然后关闭了 Visual Studio。然后重新打开 Visual Studio 并重新安装 NuGet (工具 > 扩展和更新 > 在线 > Visual Studio Gallery: NuGet Package Manager: 下载按钮)。然后在以下窗口中: 单击“安装”按钮,然后单击“关闭”按钮。然后关闭并重新打开 VisualStudio。

在 VS2013中,尝试安装 UPDATE 1(RC1) ,问题就解决了。

我有同样的问题,我发现这是因为一些字符在项目路径像[或] 我纠正了项目路径,它工作得很好!

为我修复这个症状(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>

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

只要重新启动 Visual Studio 就行了。 不需要安装软件包等。

使用 管理人特权重新启动 VisualStudio 为我解决了这个问题。

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

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

进去。NET 核心,通过在包管理器控制台中输入以下内容,我能够达到与接受答案中描述的相同的解决方案:

Install-Package EntityFramework.Core -Pre

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

这可能就是你的问题所在。

Enable-Migrations -EnableAutomaticMigrations

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

我注意到 packages/EntityFramework.6.1.3/tools/EntityFramework.psd1不见了,所以这是个可能的原因。我不知道它是怎么被移除的。

因为我已经有了迁移文件夹,所以重新启动 VisualStudio 并运行 更新-数据库-详细 在包管理器控制台。这对我工作

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

Install-Package EntityFramework -IncludePrerelease

安装完成后,在包管理器控制台中选择默认项目下拉列表。

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

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

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

No context type was found in the assembly

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

enable-migrations

检查配置部分“ 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>

我尝试了以上所有的建议,但没有工作为我然后我更新 Nuget Package Manager和它的工作。

  1. 使用以下命令将 Entity 框架安装到当前项目: PM > 安装-包 EntityFramework-包括预发布

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

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

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

我也遇到过同样的问题,我尝试了其他人提供的大部分解决方案,但它对我有效,只需要以下步骤。我有 VS 2017。

步骤:

Install-Package EntityFramework -IncludePrerelease

然后创建一个类作为

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

并在最后执行

Enable-Migrations -EnableAutomaticMigrations

什么对我不起作用:

: 重新启动 VS。

: 只有“ Enable-Migations”命令,没有-EnableAutomaticMigations。

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

我最初的错误是

/* 术语“启用-迁移”不被认为是 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者是否包含路径, 验证路径是否正确,然后再试一次 + 启用-迁移 + ~~~~~~~~~~~~~~~~ + Category oryInfo: ObjectNotFoundException: (able-mobile: String)[] ,CommandNotFoundException */

我在 VS2019预览版、 .Net 核心和 EntityFramework 核心上遇到了同样的问题。

事实证明,我必须通过 NuGetMicrosoft.EntityFrameworkCore.ToolsMicrosoft.EntityFrameworkCore.Design安装。一旦这样做,它就像一个魅力。

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

-> On the Package manager Console


Enable-migration
add-migration migrationName
update-database

检查实体框架的版本。

如果是6.3,降级到6.2,应该就没问题了

我在 Asp.net 核心 VS2019也遇到过同样的问题

这解决了问题:

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

不要忘记将 PackageManagerConsole 中的默认项目设置为数据库项目,以防出现差异。

在执行迁移时,默认项目似乎也发挥了作用。在后面的步骤中,它帮助我把这个安装到我的主启动项目(而不是 EF 数据库项目) :

Install-Package Microsoft.EntityFrameworkCore.Design

如果创建 MVC Web 项目,则应在创建项目时选择 Authentication。默认情况下不选择。 enter image description here

降到6.2级对我有帮助。
.NET Framework 版本4.6.1
旧格式的项目(非.NET 标准)
VisualStudio 应该使用初始迁移的管理权限打开。
我想6.2以上版本的 EF 需要最新的.NET Framework。

在我的例子中,NuGet 包“ Microsoft.EntityFrameworkCore.Tools”不见了