我正在使用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“。
这是否会发生,因为这仍然是测试版?有人可以帮我解决这个问题。
谢谢。
答案 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);
}