EF Migrations migrate.exe生成脚本

时间:2012-07-21 15:38:19

标签: entity-framework migration

我正在玩Entity框架和持续构建。到目前为止,通过使用migrate.exe和相应的参数,我可以毫无问题地运行迁移或一系列迁移。

然而,当我试图让migrate.exe启动脚本而不是执行迁移时,我遇到了麻烦,就像我运行时一样

update-database -TargetMigration TestMigration -script

从Visual Studio中的程序包管理器控制台中。

目前有办法做到这一点吗?

感谢。

4 个答案:

答案 0 :(得分:5)

目前尚不支持。请将您的投票添加到问题中:Migrations: -Script for Migrate.exe

答案 1 :(得分:3)

我遇到了同样的问题,实际上该选项可以在 Visual Studio 包管理器控制台中找到。所以我打开了powershell脚本和实体框架dll,并构建了一个小的可执行文件,以便可以从命令行生成脚本。源代码按原样提供,此处不作任何保证;

答案 2 :(得分:3)

您可以编写一个简单的c#控制台应用程序或使用Linqpad之类的东西来使用Entity Framework Infrastructure对象生成脚本。您只需要使用DbMigrationsConfiguration类加载DLL并实例化它。以下是与我合作的代码:

1.3

答案 3 :(得分:3)

自2017年10月22日起,你可以通过这个PR来做到这一点: https://github.com/aspnet/EntityFramework6/commit/02ec6b8c9279f93f80eeed1234e5ce0acfce5f31

这里实现此功能的Entity Framework 6.2发行说明(请参阅'Migrate.exe应该支持-script选项'部分): https://blogs.msdn.microsoft.com/dotnet/2017/10/26/entity-framework-6-2-runtime-released/

按照以下步骤操作:

  1. 在部署包含新迁移的新程序集之后,将文件migrate.exe从'\ packages \ EntityFramework.6.2.0 \ tools'复制到目标'bin'文件夹(例如在生产服务器上)
  2. 打开文件夹中的命令行并启动以下命令:
  3.   

    migrate.exe yourMigrationAssembly.dll   /startupConfigurationFile="..\web.config”   /scriptFile="migrationOutput.sql“

    它将生成文件“migrationOutput.sql”,其中包含您必须根据尚未应用的迁移在目标环境数据库上执行的SQL。