EF Core пытается применить уже примененную миграцию - PullRequest
0 голосов
/ 24 мая 2019

EDIT: Похоже, что при повторном запуске мой пользовательский SQL-запрос в процессе миграции идет не так, потому что таблицы больше не существуют при повторном запуске. Поэтому (я думаю) SQL не может быть проанализирован и, следовательно, не работает. Теперь возникает вопрос: как написать собственный SQL, чтобы он успешно выполнялся при повторном запуске

Я пытаюсь опубликовать свое веб-приложение Asp.Net Core. Когда я пытаюсь опубликовать, я получаю следующую ошибку

Error details:An error occurred during execution of the database script. The error occurred between the following lines of the script: "1143" and "1150". The verbose log might have more information about the error. The command started with the following:
"IF NOT EXISTS(SELECT * FROM [__EFMigrationsHisto"
 Invalid column name 'x'.
Invalid column name 'y'. http://go.microsoft.com/fwlink/?LinkId=178587
  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_SQL_EXECUTION_FAILURE.)    Web     0   

Теперь в моей последней миграции добавлены столбцы x и y, однако эта миграция уже применена к базе данных (~ 635):

Визуальная студия:

enter image description here

MSSQL:

enter image description here

В чем может быть причина, по которой EF хочет применить эту миграцию? Могу ли я запустить веб-развертывание в подробностях, чтобы получить больше информации? Что это значит с «сценарием»?

Заранее спасибо

Редактировать: больше никто не применяет миграции к этой базе данных, нет ожидающих изменений (add-миграция дает пустую миграцию), это соединение работало раньше, и на самом деле ничего не изменилось.

Edit2: похоже, возникли проблемы со следующим кодом. Я запустил оператор if, и он возвратил одну строку, то есть тело не должно выполняться, но в этой строке все равно происходит сбой

IF NOT EXISTS(SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20190521095635_ContractHistory')
BEGIN
    select * from AspNetUsers DECLARE @UserId nvarchar(450) DECLARE MY_CURSOR CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY FOR SELECT DISTINCT Id FROM AspNetUsers OPEN MY_CURSOR FETCH NEXT FROM MY_CURSOR INTO @UserId WHILE @@FETCH_STATUS = 0 BEGIN insert into Contracts(UserId, ContractHours, StartDate) select Id, ContractHours, ContractDatum from AspNetUsers where Id = @UserId PRINT @UserId FETCH NEXT FROM MY_CURSOR INTO @UserId END CLOSE MY_CURSOR DEALLOCATE MY_CURSOR
END;
...