我尝试在新项目中运行命令'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
但是在所有其他项目中,命令运行得很好。
为什么会这样?
BTW,我正在使用VS2010 Professional SP1
编辑:我使用命令重新安装: Install-Package EntityFramework -IncludePrerelease 问题消失了。
答案 0 :(得分:82)
只是简单地重新启动Visual Studio为我工作。 无需安装包等。
答案 1 :(得分:74)
我使用命令重新安装:Install-Package EntityFramework -IncludePrerelease,问题消失了。
答案 2 :(得分:18)
发生此问题是因为我们没有安装Entity Framework。 请使用以下命令安装Entity Framework。
Install-Package EntityFramework -IncludePrerelease
安装完成后,在包管理器控制台默认项目下拉列表中选择项目。
确保项目中至少有一个类继承自数据上下文,否则请使用以下类:
public class MyDbContext : DbContext
{
public MyDbContext()
{
}
}
如果我们不这样做,我们会收到另一个错误:
No context type was found in the assembly
完成这些操作后,您可以运行
enable-migrations
答案 3 :(得分:16)
使用管理员权限重新启动Visual Studio解决了这个问题。
答案 4 :(得分:13)
让您以管理员身份运行Visual Studio。
答案 5 :(得分:9)
首先“Install-Package EntityFramework -IncludePrerelease”然后重新启动Visual Studio作为管理员一起为我工作。
答案 6 :(得分:3)
在Visual Studio 2012中,我遇到了同样的错误。必须卸载NuGet(工具&gt;扩展和更新&gt;已安装&gt;所有:NuGet包管理器:卸载按钮)。然后关闭Visual Studio。然后重新打开Visual Studio并重新安装NuGet(工具&gt;扩展和更新&gt;在线&gt; Visual Studio库:NuGet包管理器:下载按钮)。然后在以下窗口中:单击“安装”按钮,然后单击“关闭”按钮然后关闭并重新打开Visual Studio。
答案 7 :(得分:2)
我在VS 2019 Preview,.Net Core和EntityFramework Core中遇到了相同的问题。
原来,我必须通过NuGet Microsoft.EntityFrameworkCore.Tools
和Microsoft.EntityFrameworkCore.Design
安装。一旦完成,它就像一个魅力。
答案 8 :(得分:2)
我遇到了同样的问题,我尝试了其他人提供的大多数解决方案,但通过以下步骤对我有用。我有VS 2017。
步骤:
Install-Package EntityFramework -IncludePrerelease
然后创建一个类为
public class MyDBContext : DbContext { public MyDBContext() { } }
最后执行
Enable-Migrations -EnableAutomaticMigrations
什么对我不起作用:
:重新启动VS。
:仅“ Enable-Migrations”命令,不带-EnableAutomaticMigrations。
:恢复或更新Nuget软件包管理器。
我一开始的原始错误是
/ * 术语“启用迁移”不被视为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者是否包含路径, 验证路径是否正确,然后重试。在第1行char:1 +启用迁移 + ~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound :(启用迁移:字符串)[],CommandNotFoundException * /
答案 9 :(得分:2)
在.NET Core中,通过在包管理器控制台中输入以下内容,我能够达到接受答案中描述的相同分辨率:
Install-Package EntityFramework.Core -Pre
答案 10 :(得分: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>
我还没有完全理解为什么,但它至少起作用了。
答案 11 :(得分:1)
Enable-Migrations -EnableAutomaticMigrations
答案 12 :(得分:1)
由于我已经有了迁移文件夹,我重新启动了Visual Studio并运行了 Update-Database -verbose 在包管理器控制台中。这对我有用
答案 13 :(得分:1)
我尝试了以上所有建议,但没有任何对我有用,然后我更新Nuget Package Manager
并且它有效..
答案 14 :(得分:1)
使用以下命令将实体框架安装到当前项目: PM>安装包EntityFramework -IncludePrerelease
在Model文件夹中添加一个类“ MyDBContext”,如下所示:
公共类MyDBContext:DbContext { 公共MyDBContext() { } }
现在使用以下命令为当前项目启用迁移: PM> enable-migrations
答案 15 :(得分:1)
我有同样的问题,我发现这是因为项目路径中的某些字符,如[或] 我纠正了项目路径并且工作正常!
答案 16 :(得分:0)
答案 17 :(得分:0)
我只是在 asp.net核心 VS2019中遇到了相同的问题
这解决了它:
Install-Package Microsoft.EntityFrameworkCoreInstall-Package
Install-Package Microsoft.EntityFrameworkCore.Tools
别忘了在Package Manager Console中将默认项目设置为数据库项目,以防它们不同。
在执行迁移时,默认项目似乎也发挥了作用。在随后的步骤中,它帮助将其安装到我的主要启动项目(不是EF数据库项目)中:
Install-Package Microsoft.EntityFrameworkCore.Design
答案 18 :(得分:0)
检查实体框架的版本。
如果是6.3,则将其降级为6.2,它应该可以正常工作
答案 19 :(得分:0)
以管理员身份运行vs = >>打开opneproject
enabele-migration
add-migration migrationName
update-database
答案 20 :(得分:0)
降级到6.2帮助了我。
.NET Framework版本4.6.1
旧格式的项目(非.NET标准)
Visual Studio应该以管理员权限打开,以便进行初始迁移。
我想6.2以上版本的EF需要最新的.NET Framework。
答案 21 :(得分: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>
答案 22 :(得分:0)
这些解决方案都不适合我。我的解决方案是删除packages/EntityFramework.6.1.3
和Restore NuGet Packages
我注意到packages/EntityFramework.6.1.3/tools/EntityFramework.psd1
丢失了,所以这可能是原因。它是如何被删除的,虽然我没有线索。
答案 23 :(得分:0)
我在解决方案中有多个项目,但我有正确的默认项目集,所以我认为它应该有效。
最后,我必须在命令
中添加-StartupProject MyProjectName
选项
答案 24 :(得分:0)
在VS 2013中,尝试安装UPDATE 1(RC1)并解决问题。
答案 25 :(得分:-4)
检查项目是否在“解决方案资源管理器”窗口中打开。
这可能是导致问题的原因。