Начальная Add-Migration считает, что база данных уже обновлена

0

Я пытаюсь выполнить полный сброс первых кодов EF Core в моем проекте. У меня есть все основания для этого (можно объяснить, если это необходимо), но мне трудно заставить его работать.

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

См. Ниже журнал. Примерно три четверти пути вниз, вы видите, что EF считает, что база данных уже обновлена. Однако вы видите, что вначале она создала новую базу данных? Примечание. Я урезал много в конце журнала, так как это просто ошибки трассировки стека, потому что он не смог найти таблицу, которая, по его мнению, уже должна была существовать.

Любые рекомендации по воссозданию новой начальной миграции и обновлению базы данных?

PM> Add-Migration InitialCreate
Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\CollinB\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
Microsoft.EntityFrameworkCore.Infrastructure[10403]
      Entity Framework Core 2.0.1-rtm-125 initialized 'FilterListsDbContext' using provider 'Pomelo.EntityFrameworkCore.MySql' with options: MaxPoolSize=128 MigrationsAssembly=FilterLists.Api 
Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE DATABASE 'filterlistsdata';
Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (33ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE TABLE '__EFMigrationsHistory' (
          'MigrationId' varchar(95) NOT NULL,
          'ProductVersion' varchar(32) NOT NULL,
          CONSTRAINT 'PK___EFMigrationsHistory' PRIMARY KEY ('MigrationId')
      );
Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (18ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='filterlistsdata' AND TABLE_NAME='__EFMigrationsHistory';
Microsoft.EntityFrameworkCore.Database.Command[20101]
      Executed DbCommand (4ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT 'MigrationId', 'ProductVersion'
      FROM '__EFMigrationsHistory'
      ORDER BY 'MigrationId';
Microsoft.EntityFrameworkCore.Migrations[20405]
      **No migrations were applied. The database is already up to date.**
fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      SELECT CASE
          WHEN EXISTS (
              SELECT 1
              FROM 'languages' AS 'l')
          THEN TRUE ELSE FALSE
      END
MySql.Data.MySqlClient.MySqlException (0x80004005): Table 'filterlistsdata.languages' doesn't exist ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Table 'filterlistsdata.languages' doesn't exist
Теги:
.net-core
entity-framework
entity-framework-core
ef-code-first

2 ответа

0
Лучший ответ

Я понял. Я не понимал, что приложение действительно работает, когда я запускаю первоначальный add-migration. Он запускал некоторый код моего семени, который вызывал его. Временно комментируя это, я разрешил запуск моего первоначального создания.

0

Никогда вручную не удаляйте папку Migrations. Это сэкономит вам много головной боли; вы сначала используете код для создания своей базы данных, поэтому сначала используйте код для удаления.

Сначала закройте визуальную студию и откройте ее. Затем попробуйте снова выполнить миграцию.

если это не сработает, самой простой вещью в этой точке было бы перейти к appsettings.json и изменить имя вашей базы данных. Затем запустите add-migration и обновите базу данных.

  • 0
    Спасибо! Проблема, с которой я столкнулся, заключалась в том, что я изначально создал базу данных, не закодированную с помощью utf8. Попытка использовать миграции, которые я уже имел, против новой ошибки базы данных utf8 из-за проблем с максимальным размером строки. Я попытался добавить новую миграцию, отрегулировав размеры столбцов в таблице, в которой произошел сбой, но, поскольку он обновляет базу данных по одной миграции за раз при добавлении миграции, он вывел ошибку, прежде чем приступил к созданию новой миграции с помощью меньшие колонны. Я попытался закрыть и снова открыть VS, но безуспешно. Я также попробовал новое имя БД с той же ошибкой.
  • 0
    Я не уверен, что это хороший совет, чтобы сказать, что вы никогда не должны вручную удалять папку миграции. Какие доказательства у вас есть, чтобы подтвердить свое заявление? Я успешно удалил свою папку в прошлом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню