繁体   English   中英

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

[英]How can I manage EF 6 migrations in visual studio 2015?

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

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

add-migrations:术语“ add-migrations”不被视为cmdlet,函数,脚本文件或可运行程序的名称。 检查名称的拼写,或者是否包含路径,请验证路径是否正确,然后重试。

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

您是否尝试过卸载并重新安装EntityFramwork NuGet软件包? 我遇到了与上述相同的问题,并且解决了该问题。

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

Update-Package –reinstall EntityFramework

这修复了所有命令丢失的错误,然后允许我启动数据库更新并在VS2015中创建新的迁移。

我已经做了一些检查,但我将回顾一下所有ef场景:

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

我遇到类似的问题,因为我也无法从Package Manager控制台运行“ 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 ...应该可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM