指定的目标迁移'201201230637551_Migration'不存在?

时间:2012-01-23 06:48:40

标签: c#-4.0 entity-framework-4 ef-migrations

我正在使用EntityFramework 4.3 beta版及其数据迁移工具。我编写了以下代码来生成自定义迁移并将其应用于数据库。

MigrationScaffolder ms=new MigrationScaffolder(configuration);
ScaffoldedMigration scaffoldedMigration= ms.Scaffold("Migration");

DbMigrator dbMigrator = new DbMigrator(configuration);
dbMigrator.Update(scaffoldedMigration.MigrationId);

脚手架功能正常运行并正确生成了迁移。

但是有一个例外,并说

  

“指定的目标迁移'201201230637551_Migration'没有   存在。确保目标迁移是指现有迁移   ID“。

这是否会发生,因为这仍然是测试版?有人可以帮我解决这个问题。

谢谢。

1 个答案:

答案 0 :(得分:3)

这不是因为您使用的是测试版。 MigrationScaffolder类仅用于生成配置类。生成的文件未自动添加到解决方案中。如果我们想将它传递给DbMigrator.Update()方法,我们应该首先将生成的文件添加到解决方案中。然后我们应该创建该类的一个实例,并将它传递给像这样的update()方法。

{
    DbMigrationsConfiguration myConfiguration=new MyConfiguration();
    DbMigrator dbMigrator = new DbMigrator(configuration);
    dbMigrator.Update(myConfiguration);
}

这里MyConfiguration是生成的类。

此外,您无需以这种方式将迁移应用到项目中。相反,您可以使用:

{
    DbMigrationsConfiguration myConfiguration=new DbMigrationsConfiguration(){
       AutomaticMigrationsEnabled = true;
       AutomaticMigrationDataLossAllowed = true;
    }
    DbMigrator dbMigrator = new DbMigrator(configuration);
    dbMigrator.Update(myConfiguration);
}