#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