Указанная целевая миграция '201201230637551_Migration' не существует? - PullRequest
2 голосов
/ 23 января 2012

Я использую бета-версию EntityFramework 4.3 и средство переноса данных. Я написал следующий код для генерации пользовательской миграции и применил ее к БД.

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

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

Функция скаффолдинга работала нормально и правильно генерировала миграцию.

Но возникает исключение и говорит

"Указанная целевая миграция '201201230637551_Migration' не существовать. Убедитесь, что целевая миграция относится к существующей миграции ID. "

Это происходит, так как это бета-версия? Может кто-нибудь помочь мне решить эту проблему.

Спасибо.

1 Ответ

3 голосов
/ 06 марта 2012

Это не потому, что вы использовали бета-версию. Класс 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);
}
...