用于后端数据库的存储管理,而无需使用ORM工具

问题描述 投票:3回答:1

[大多数时候,当使用数据库设置后端项目时,我使用ORM工具来处理数据库内容。因此,数据库架构和迁移都与后端代码耦合,我可以将其保留在后端存储库中。

现在,我正在创建仅依赖一种数据库类型的多个项目,并且必须使用纯SQL。

我想了解处理额外的“数据库项目”的最佳实践。含义数据库-后端-前端。我应该将数据库方案放入自己的存储库中吗?然后,我也可以将类似MigrationFrom1To2的SQL脚本放入此存储库。

我想到的问题是,当与许多开发人员一起使用数据库和后端项目时,如何使两个项目保持同步?假设有一个后端代码的请求请求,该请求期望一个尚不存在的新数据库表。然后,您还必须等待数据库存储库也实现该功能(添加导致其他存储库问题的链接)。这样,每个后端开发人员都将不得不提取最新的数据库迁移脚本来更新自己的本地数据库,因此他必须在进行后端工作之前检查是否有新的数据库迁移。

[目前,我知道如何使用ORM管理项目,但是如果有人可以解释如何使用普通SQL(最好是一个数据库)来管理项目,那就太好了。如果有帮助,我正在使用MariaDb和.NET Core。特别是在涉及到自动构建和Docker(使用Github Actions或其他工具)时。

c# sql git asp.net-core database-migration
1个回答
0
投票

许多连接到相同数据库的应用程序通常不是一个好主意,这是人们转向微服务的主要原因之一。因此它们具有数据隔离,并且一项服务与另一项服务的数据库无关。

如果您有一个处理许多项目的大型解决方案,我建议您使用

DbUp

DbUp是一个.NET库,可帮助您将更改部署到SQL Server数据库。它跟踪哪些SQL脚本已经运行,并运行使数据库更新所需的更改脚本。

它不是ORM,它使用纯SQL。您可以在代码中创建一个SQL脚本列表,它也是源代码控制的一部分,并且每次启动应用程序时,您都检查是否所有迁移都已应用,如果没有,则应用最后的更改。

可以自动进行迁移检查和数据库更新

  1. part of the CI/CD pipelines
  2. 作为应用程序中的启动任务,每次启动应用程序时都会运行。您可以在Andrew Lock's博客中找到有关如何设置启动任务的示例。
© www.soinside.com 2019 - 2024. All rights reserved.