重新部署ASP.NET Core MVC网站后,Azure SQL数据库列未更新

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (36)

我正在使用C#开发ASP.NET Core MVC Web应用程序。我只将一次应用程序部署到Azure,并使用Azure SQL数据库存储应用程序的数据。我对数据库进行了本地更改(通过添加一个名为数据库中调用LogType的表的额外列Logs)和应用的迁移,一切工作都很好,本地。我将我的应用程序重新部署到Azure,它成功,没有错误。但是,当我浏览网站时,我不断收到Sql异常:

SqlException:列名“LogType”无效。

所以我问我如何应用迁移并更新Azure SQL数据库以反映我的本地更改?

提问于
用户回答回答于
用户回答回答于

理想情况下,有一个CI / CD管道用于传播环境上游的变更(代码,数据库架构等)(例如开发,测试,升级,生产等),包括BVT测试,以防止破坏事物。

在下面找到几个传播此更改的选项:

- - 选项1 - -

一种方法是通过SSMS(例如SQL Server Management Studio,版本17.2)连接到Azure SQL服务器/数据库并运行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列添加到表中,这可以通过使用SSMS连接到Azure SQL服务器/数据库来完成,右键单击表名并选择设计。然后,添加新列。

扫码关注云+社区

领取腾讯云代金券