Столбец базы данных Azure SQL не обновляется после повторного развертывания веб-сайта ASP.NET Core MVC - PullRequest
0 голосов
/ 05 июня 2018

Я занимаюсь разработкой веб-приложения ASP.NET Core MVC с использованием C #.Я развернул свое приложение только один раз в Azure и использовал базу данных SQL Azure для хранения данных приложения.Я сделал локальные изменения в базе данных (добавив дополнительный столбец с именем LogType в таблицу с именем Logs в базе данных) и применил миграцию, и все работает отлично, локально.Я повторно развернул свое приложение в Azure, и оно прошло успешно, без ошибок.Тем не менее, я продолжаю получать исключение Sql при просмотре веб-сайта:

SqlException: недопустимое имя столбца 'LogType'.

Поэтому я спрашиваю, как я могуприменить миграцию и обновить базу данных SQL Azure, чтобы отразить мои локальные изменения?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

В идеале, существует конвейер CI / CD для распространения изменений (код, схема базы данных и т. Д.) В окружающих средах (например, разработка, тестирование, подготовка, производство и т. Д.), Включая тесты BVT, для предотвращения взлома.вещи.

Найдите ниже несколько вариантов, чтобы распространить это изменение:

--- Вариант 1 ---

Один подход будет соединятьсяк серверу / базе данных SQL Azure через SSMS (например, SQL Server Management Studio, версия 17.2) и выполнение сценария T-SQL, такого как приведенный ниже пример (изменение имени таблицы и отладочных отпечатков), где ондобавляет столбец LogType к существующей таблице с именем dbo.Customer .

Кроме того, этот сценарий также можно выполнить на портале Azure, перейдя к Azure.База данных SQL> Редактор запросов (предварительный просмотр) и запуск сценария.

IF EXISTS(SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.Customer') AND name='LogType')
BEGIN
    PRINT 'Column LogType already exists on table dbo.Customer and it is configured properly.'
END
ELSE
BEGIN
    PRINT 'Adding column LastName to table dbo.Customer...'

    ALTER TABLE dbo.Customer
    ADD LogType VARCHAR(100) NOT NULL
END
PRINT '--- DONE ---'
GO

--- Вариант 2 ---

Другой вариант будет вручную добавление LogType столбец таблицы, который можно выполнить, подключившись к серверу / базе данных SQL Azure с помощью SSMS , щелкните правой кнопкой мыши имя таблицы и выберите дизайн.Затем добавляем новый столбец.

0 голосов
/ 06 июня 2018

В этой статье: https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application#deploy-the-application-to-azure

В части "8. Выберите Обновить базу данных". В ней описывается, как ее настроить во время публикации:

update database

Если вы не хотите выполнять автоматическую миграцию, здесь приведены дополнительные сценарии: https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application#advanced-migrations-scenarios

Если у вас EF core, вы также можете проверить это: EntityFramework Core Automaticмиграции

...