Миграция в коде говорит, что есть ожидающие изменения, а их нет - PullRequest
0 голосов
/ 30 мая 2018

Итак, я пытаюсь запустить database update в MVC 5 внутри действия MVC:

public async Task<ActionResult> UpdateDatabase(UpdateDatabaseModel updateDatabaseModel)
{
    DbMigrationsConfiguration migrationsConfiguration = new DbMigrationsConfiguration
    {
        TargetDatabase = new DbConnectionInfo("DefaultConnection"),
        ContextType = typeof(ApplicationDbContext),
        MigrationsAssembly = typeof(ApplicationDbContext).Assembly
    };

    var migrator = new DbMigrator(migrationsConfiguration);
    migrator.Update(updateDatabaseModel.SelectedMigration);
    return this.View("ManageApplication");
 }

Проблема в том, что при migrator.Update(updateDatabaseModel.SelectedMigration); выдается ошибка:

Невозможно обновить базу данных в соответствии с текущей моделью, поскольку есть ожидающие изменения и автоматическая миграция отключена.Либо запишите ожидающие изменения модели в миграцию на основе кода, либо включите автоматическую миграцию.Установите для DbMigrationsConfiguration.AutomaticMigrationsEnabled значение true, чтобы включить автоматическую миграцию.

Но когда я делаю add-migration, Up() и Down() пусты (также после добавления этой миграции все равно выдаетсяисключение)

Есть идеи?

Я также проверил это: EF Add-Migration указывает "Нет ожидающих явных миграций", но Update-Database жалуется ".. Есть ожидающие изменения" но пространства имен в порядке.

1 Ответ

0 голосов
/ 30 мая 2018

Хорошо, правильное решение легко:

При включении миграций во вновь созданном пространстве имен Migrations создается класс Configuration.Этот класс наследуется от DbMigrationsConfiguration<TContext> и наследуется от DbMigrationsConfiguration.Итак, нам не нужно создавать экземпляр с new DbMigrationsConfiguration(), но с этим сгенерированным new Configuration().

правильный код:

public async Task<ActionResult> UpdateDatabase(UpdateDatabaseModel updateDatabaseModel)
{
    DbMigrationsConfiguration configuration = new Configuration();

    var migrator = new DbMigrator(migrationsConfiguration);
    migrator.Update(updateDatabaseModel.SelectedMigration);
    return this.View("ManageApplication");
 }

и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...