2

我正在使用 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。”

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

谢谢你。

4

1 回答 1

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);
}
于 2012-03-06T09:48:31.213 回答