gpt4 book ai didi

c# - Azure devops 在部署时在多个数据库上执行 ef core (.Net core 3.0) 迁移 sql 脚本(来自项目存储库)

转载 作者:行者123 更新时间:2023-12-03 02:45:57 25 4
gpt4 key购买 nike

我在 Azure 上有一个 API APP,我首先在 Entity Framework 核心代码之上构建 API。



EF 正在与 3 个不同的数据库通信



连接字符串存储在 azure 应用配置中。



我在我的应用程序中使用 .Net Core 3.0



我有一个专门的类库来管理域和迁移。



我有多个上下文,每个上下文都插入到 Azure 上的不同数据库。



我将迁移脚本和数据库初始化脚本放在 api 应用程序项目中名为 ReleaseScripts 的文件夹下,如下所述:



Solution Structure



如您所见,每个上下文/数据库脚本都放在特定的文件夹下:DA、DC、DP。还有一个用于种子或初始化脚本的通用文件夹。



每个文件夹中的脚本都有编号(我可以指定执行顺序的方式)。



我有 2 个环境(开发和生产 azure 资源组),以及存储库 Developmaster 中的两个主要分支。 p>

这是我由构建下降触发的实际发布管道



Pipeline steps



并执行任务。



Tasks



这也是我的管道代理配置:



agent



最后,我想在部署时执行我的存储库中ReleaseScripts文件夹中的每个脚本(如果尚未执行)



我找到了这个Microsoft link谈论它但不详细。



此外,我不太明白我应该如何解决这个问题;



关于如何做到这一点有什么想法吗?



如有任何建议,我们将不胜感激






最佳答案





问题是您希望仅在尚未执行的情况下执行每个脚本。这意味着您需要以某种方式保留 SQL Server 上已执行的状态 - 这将需要迁移表或类似的东西。



因此,我建议将所有 SQL 脚本设为幂等,然后通过 SQLCMD 执行它们 - https://learn.microsoft.com/en-us/sql/ssms/scripting/sqlcmd-run-transact-sql-script-files?view=sql-server-ver15



在 Azure Pipelines 中,您应该能够使用Azure SQL 数据库部署任务 https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/sql-azure-dacpac-deployment?view=azure-devops








关于c# - Azure devops 在部署时在多个数据库上执行 ef core (.Net core 3.0) 迁移 sql 脚本(来自项目存储库),我们在Stack Overflow上找到一个类似的问题:

https://stackoverflow.com/questions/58858529/




25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com