我正在玩Entity框架和持续构建。到目前为止,通过使用migrate.exe和相应的参数,我可以毫无问题地运行迁移或一系列迁移。
然而,当我试图让migrate.exe启动脚本而不是执行迁移时,我遇到了麻烦,就像我运行时一样
update-database -TargetMigration TestMigration -script
从Visual Studio中的程序包管理器控制台中。
目前有办法做到这一点吗?
感谢。
答案 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/
按照以下步骤操作:
migrate.exe yourMigrationAssembly.dll /startupConfigurationFile="..\web.config” /scriptFile="migrationOutput.sql“
它将生成文件“migrationOutput.sql”,其中包含您必须根据尚未应用的迁移在目标环境数据库上执行的SQL。