Удаление кода при первой миграции и переход на более раннее состояние

У меня несколько DBContext, поэтому я создал несколько папок Code first Migration. Я только что создал в коде еще одну DBContext и связанную таблицу. Я также добавил папку миграции и применил ее в базе данных как InitialSetup. Теперь я понимаю, что мне не нужны новые изменения в БД и коде. Я хочу удалить эту папку миграции и отменить изменения базы данных, которые были применены во время этой миграции.

Когда я запускаю такую ​​команду:

Update-Database –TargetMigration: ContentAddDownloadPath

получить эту ошибку: в сборке DnpMVCSite обнаружено несколько типов конфигурации миграции. Укажите имя используемого.

При указании пути конфигурации:

Update-Database -ConfigurationType DnpMVCSite.Migrations.ContentMigration.Configuration –TargetMigration: ContentAddDownloadPath

он показывает сообщение, что «Целевая база данных уже имеет версию 201407140515121_ContentAddDownloadPath».

Моя проблема в том, что я хочу удалить недавно добавленную папку миграции и модификацию БД, выполненную этой миграцией.


person Nps    schedule 27.07.2014    source источник


Ответы (1)


Если вы просто выполните следующую команду в консоли диспетчера пакетов

Add-Migration Step3
Update-Database

И вы хотите его откатить, просто выполните следующую команду

Update-Database -TargetMigration Step2

Step2 - это имя миграции до Step3.

Затем вы можете удалить файл Step3, а также отменить изменения кода.

Пожалуйста, проверьте эту статью как ссылку на параграф Перенести на конкретную Версия (включая более раннюю).

ОБНОВИТЬ

Я думаю, что вы хотите отменить все изменения в конкретной целевой папке миграции / целевой конфигурации. Для этого вы можете указать -TargetMigration 0.

Будьте осторожны, если вы сделаете это, все миграции в этом каталоге / конфигурации будут возвращены даже в исходное состояние. Например, у меня есть эти классы, которые относятся к одной и той же базе данных.

public class AppContext : DbContext
{
    public DbSet<Customer> Customers { get; set; }
}
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public string Area { get; set; }
}
public class AppContext2 : DbContext
{
    public AppContext2()
        : base("AppContext")
    {
    }
    public DbSet<City> Cities { get; set; }
}
public class City
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Code { get; set; }
    public string Area { get; set; }
    public string Grade { get; set; }
    public string Division { get; set; }
}

Мой каталог выглядит так

Папка миграции

И если я хочу отменить все изменения в папке Migrations2, мне нужно сделать следующее.

Update-Database -ConfigurationTypeName PlaygroundTestEF.Migrations2.Configuration -TargetMigration 0

Результат будет следующим: таблица городов теперь удалена.

Конечный результат

person Yuliam Chandra    schedule 27.07.2014
comment
Я уже просмотрел эту статью и попытался вернуться к предыдущей версии. Но это не сработало. Я обновил вопрос - person Nps; 28.07.2014