使用带版本控制的 MVC .net 更新 SQL 服务器数据库架构
Update SQL Server database schema using MVC .net with versioning
我们正在使用托管在 Azure 上的 SQL 服务器数据库和 Web 应用程序。我们在带有版本列的 table 中维护数据库版本。
我们已将代码添加到 Application_Start()
来检查数据库的版本,并从我们的 ASP.NET MVC 应用程序中执行比当前版本更高的命令来升级架构。
它工作正常,直到最近我们注意到在几秒钟内 Application_Start
事件再次触发并升级架构功能 运行 两次。
我们如何通过添加一些检查是否有另一个实例升级模式来防止升级模式,或者有没有办法不多次触发 Application_Start
事件?
我们使用 Azure Dev Ops 管道将代码部署到 Web 应用程序。
谢谢!
您的网络应用程序可能会出于您无法控制的多种原因而被回收。因此,由于您刚才提到的原因,将代码放在 Application_Start 到 运行 使您的数据库保持最新的脚本中并不是最佳选择。
由于您已经在使用 Dev Ops 管道,因此有一种内置方法可以将其作为部署的一部分来处理。检查 Visual Studio 中的数据库项目类型。这将允许您以文本形式编写所有表、存储过程、视图等的脚本,并将其置于源代码控制之下。然后,作为 Dev Ops 管道的一部分,您可以使用 Visual Studio Build task to build your Database project and create a DACPAC as output. Then, use the Azure SQL Database Deployment Task 获取 DACPAC 输出并将其部署到您的 Azure SQL 实例。
这样,您知道您的数据库在完成生产部署之前已经升级。
我们正在使用托管在 Azure 上的 SQL 服务器数据库和 Web 应用程序。我们在带有版本列的 table 中维护数据库版本。
我们已将代码添加到 Application_Start()
来检查数据库的版本,并从我们的 ASP.NET MVC 应用程序中执行比当前版本更高的命令来升级架构。
它工作正常,直到最近我们注意到在几秒钟内 Application_Start
事件再次触发并升级架构功能 运行 两次。
我们如何通过添加一些检查是否有另一个实例升级模式来防止升级模式,或者有没有办法不多次触发 Application_Start
事件?
我们使用 Azure Dev Ops 管道将代码部署到 Web 应用程序。
谢谢!
您的网络应用程序可能会出于您无法控制的多种原因而被回收。因此,由于您刚才提到的原因,将代码放在 Application_Start 到 运行 使您的数据库保持最新的脚本中并不是最佳选择。
由于您已经在使用 Dev Ops 管道,因此有一种内置方法可以将其作为部署的一部分来处理。检查 Visual Studio 中的数据库项目类型。这将允许您以文本形式编写所有表、存储过程、视图等的脚本,并将其置于源代码控制之下。然后,作为 Dev Ops 管道的一部分,您可以使用 Visual Studio Build task to build your Database project and create a DACPAC as output. Then, use the Azure SQL Database Deployment Task 获取 DACPAC 输出并将其部署到您的 Azure SQL 实例。
这样,您知道您的数据库在完成生产部署之前已经升级。