2016-09-22 86 views
1

我试图使用命令dotnet ef migrations script来创建用于上次应用迁移和上次未应用迁移之间的SQL脚本。应用迁移是一个被称为dotnet ef database update使用ASP.NET Core工具创建迁移脚本时未找到迁移到/ from找不到

我尝试执行下面的命令,没有他们的工作:

dotnet ef --startup-project ../DbMigrations/ migrations script from LastAppliedMigration to LastNotAppliedMigration -o temp.sql --context MyProject.DbModel.MusicDbContext 

dotnet ef --startup-project ../DbMigrations/ migrations script from LastAppliedMigration -o temp.sql --context MyProject.DbModel.MusicDbContext 

我得到以下错误:System.InvalidOperationException:“从”被迁移未找到。

System.InvalidOperationException: The migration 'from' was not found. 
    at Microsoft.EntityFrameworkCore.Migrations.MigrationsAssemblyExtensions.GetMigrationId(IMigrationsAssembly assembly, String nameOrId) 
    at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateScript(String fromMigration, String toMigration, Boolean idempotent) 
    at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.ScriptMigration(String fromMigration, String toMigration, Boolean idempotent, String contextType) 
    at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsScriptCommand.Execute(CommonOptions commonOptions, String from, String to, String output, Boolean idempotent, String context, String environment) 
    at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsScriptCommand.<>c__DisplayClass0_0.<Configure>b__0() 
    at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args) 
    at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args) 

对于迁移的名字我想这两个版本的前缀时间戳和无:

  1. 20160920085915_LastAppliedMigration
  2. LastAppliedMigration

难道我正确地使用这个命令dotnet ef migrations script

编辑1

我做了一个简单的例子来证明,我有这个问题。这个例子可以从这里Download example

下载我做了什么:

  1. 创建一个默认的Web应用程序项目
  2. dotnet ef migrations add Initial
  3. dotnet ef migrations script -o initial.sql - 在initial.sql文件创建
  4. dotnet ef database update
  5. 已添加StudentData
  6. 新增``DbSet in ApplicationDbContext```
  7. dotnet ef migrations add Student
  8. dotnet ef migrations script from 20160924174811_Initial -o student.sql

在这里,我得到以下错误 - '从' 未找到迁移。

Project WebApplication3 (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.    
System.InvalidOperationException: The migration 'from' was not found.           
    at Microsoft.EntityFrameworkCore.Migrations.MigrationsAssemblyExtensions.GetMigrationId(IMigrationsAssembly assembly, String nameOrId)                      
    at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateScript(String fromMigration, String to Migration, Boolean idempotent)                     
    at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.ScriptMigration(String fromMigration, String to Migration, Boolean idempotent, String contextType)                
    at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsScriptCommand.Execute(CommonOptions commonOptions, String from, String to, String output, Boolean idempotent, String context, String environment)      
    at Microsoft.EntityFrameworkCore.Tools.Cli.MigrationsScriptCommand.<>c__DisplayClass0_0.<Configure>b__0() 
    at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)      
    at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)          
The migration 'from' was not found. 

当我做dotnet ef migrations list我得到以下结果:

Project WebApplication3 (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation. 
20160924174811_Initial 
20160924175511_Student 

的CLI工具的版本是

dotnet --version 
1.0.0-preview2-003131 
+0

第二个版本应该工作。你使用什么版本的CLI工具? –

+0

迈克迈克,我已经添加了编辑1与演示应用程序展示我的问题。我正在尝试从20160924174811_Initial -o student.sql'''制作'''dotnet ef migrations脚本,并且它不能与错误一起工作:找不到'from'的迁移。你可以下载附加的项目并看看。任何帮助将非常感激。谢谢! – feradz

回答

1

好吧,我想通了。

from不是一个选项名称,它的位置应直接显示迁移名称。

以下工作命令的例子:

dotnet ef migrations script Initial -o student.sql

或也是有效

dotnet ef migrations script 20160924174811_Initial -o student2.sql