如何在Visual Studio 2015中管理EF 6迁移?

我使用Visual Studio 2013最新更新使用EntityFramework -Version 6.1.2启动了一个新的MVC项目。 我进行了几次迁移并更新了数据库。 在此之后,我在另一台计算机上检出了该项目,并使用Visual Studio 2015 CTP 6打开。

如果我进入包管理器控制台并尝试运行任何迁移命令,则无法识别它们:

add-migrations:术语“add-migrations”不被识别为cmdlet,函数,脚本文件或可操作程序的名称。 检查名称的拼写,或者如果包含路径,请validation路径是否正确,然后重试。

如何在Visual Studio 2015中使用Entity Framework 6管理迁移?

您是否尝试过卸载并重新安装EntityFramwork NuGet包? 我遇到了与描述相同的问题并解决了它。

好的,所以我在VS2013中启动并升级到VS2015 RC的EF6项目遇到了这个问题。 如果我在VS2013中打开它但在VS2015中没有打开命令。 我发现快速轻松地解决问题的方法是使用重新安装包命令:

 Update-Package –reinstall EntityFramework 

这修复了任何缺少错误的命令,然后允许我启动数据库更新并在VS2015中创建新的迁移。

我已经做了一些检查,但我会重新尝试覆盖所有ef场景:

asp.net 5项目中的ef7 :迁移管理已更改,现在使用ef migration命令处理。
ef7在传统的.net应用程序中 :它是必需的框架4.5.1,但是在这个页面中,在.net应用程序中,你可以找到一个关于如何在传统应用程序中使用ef 7的好指南。 添加EntityFramework.Commands包很重要。
ef6 :不能与asp.net 5一起使用 ,所以即使你可以安装它,构建也会被破坏。 大多数实际ef驱动程序的情况与mongodb和Postgresql相同。 如果您不确定是兼容ef 7的驱动程序,请不要安装它。 目前我认为你可以只依靠sqlserver和inMemory。
对于asp.net 4应用程序,命令的实际安装是entity framework包本身的一部分,因此将在第一次安装包时安装(如上所述)。
在某些情况下,在没有安装ef软件包的环境中,复制一个asp.net 4项目并开始处理它可能会出现这个问题,当出于任何原因安装软件包时,它会神奇地消失。

我遇到了类似的问题,因为我无法从软件包管理器控制台运行Add-Migration (虽然我得到了一个不同的错误。)不幸的是,重新安装EntityFramework对我来说不起作用,也许是因为我有ASP.Net 5项目在相同的解决方案。 (这不适用于传统的csproj ,因为它需要resx,据我所知,它不受支持。)

我最终创建了一个控制台应用程序,引用了包含我的迁移的项目,并添加了以下内容:

  var configuration = GetConfiguration(); var scaffolder = new MigrationScaffolder(configuration); scaffolder.Namespace = configuration.MigrationsNamespace; var scaffoldedMigration = scaffolder.Scaffold(name); System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".cs", scaffoldedMigration.UserCode); System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".Designer.cs", scaffoldedMigration.DesignerCode); System.IO.File.WriteAllText(scaffoldedMigration.MigrationId + ".resx", BuildResx(scaffoldedMigration.Resources)); 

GetConfiguration返回*.Migration.Configuration类的实例。 name是迁移的新名称。 默认情况下,此代码将其放入控制台应用程序的Debug文件夹中; 从那里拖放到您的Migration文件夹中的Visual Studio,它应该可以解决问题。

我后来发现这与https://stackoverflow.com/a/20382226/195653基本相同,但原因完全不同。

我做了重新安装或卸载的所有组合,并安装了EntityFramework以及关闭和重新打开VS. 唯一有效的方法是删除解决方案文件夹中的文件夹包并重建解决方案以强制下载所有包。

Update-Package EntityFramework ……应该可以解决问题。