Как удалить существующую миграцию и добавить с нуля?

#c# #asp.net-mvc #entity-framework #entity-framework-core #entity-framework-migrations

#c# #asp.net-mvc #entity-framework #entity-framework-core #entity-framework-миграции

Вопрос:

Я только что создал миграцию со следующей моделью и обновил базу данных, и таблица создана

 public class ZipSearchHistory: BaseEntity
{
    public string City { get; set; }
    public string State { get; set; }
    public string ZipCode { get; set; }
    public int Count { get; set; }
}
  

Я понял, что в ZipCode вместо string будет int. Итак, я удалил весь файл миграции, а также удалил таблицу в SSMS вручную, чтобы начать с нуля. Теперь я применил миграцию.

Мой код миграции :

 public partial class ZipCodeSearchHistoryTable : DbMigration
{
    public override void Up()
    {
        AddColumn("dbo.ZipSearchHistories", "ZipCode", c => c.Int(nullable: false));
        DropColumn("dbo.ZipSearchHistories", "Zip");
    }
    
    public override void Down()
    {
        AddColumn("dbo.ZipSearchHistories", "Zip", c => c.String());
        DropColumn("dbo.ZipSearchHistories", "ZipCode");
    }
}
  

и когда я пытаюсь обновить op-database, я получаю сообщение об ошибке

Не удается найти объект «dbo.ZipSearchHistories», потому что он не существует или у вас нет разрешений

Как я могу это решить?

Комментарии:

1. Вы можете попробовать удалить данные миграции в вашей базе данных. Кроме того, когда вы вносите какие-либо изменения в свой класс, вам не нужно перезапускать все заново. Просто add-migration Change2 и все должно быть в порядке.

Ответ №1:

Вы удалили файлы миграции, кроме того, если вы снова начинаете с нуля, я бы посоветовал также удалить файл моментального снимка dbcontext, потому что, похоже, вы этого не сделали.

Потому что прямо сейчас произошло то, что Entity Framework сравнила изменения с файлом моментального снимка. (Именно по этой причине вы видите изменения, вносимые только для zipcode столбца, и не видите, как он снова создает новую таблицу, как вы ожидали, я думаю, поскольку вы удалили данные из таблицы миграций в db)

https://learn.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations?view=aspnetcore-3.1