gpt4 book ai didi

c# - 数据库部署策略 (SQL Server)

转载 作者:IT王子 更新时间:2023-10-29 03:49:03 26 4
gpt4 key购买 nike

我正在寻找一种方法来进行日常部署并使数据库脚本与版本保持一致。

目前,我们有一种相当不错的方式来部署我们的源代码,我们有单元代码覆盖率、持续集成和回滚程序。

问题在于使数据库脚本与版本保持一致。每个人似乎都在测试数据库上试用脚本,然后在实时运行它们,当 ORM 映射更新(即更改生效)时,它会选择新列。

第一个问题是没有任何脚本必须写在任何地方,通常每个人都“尝试”将它们放入 Subversion 文件夹中,但一些比较懒惰的人只是在现场运行脚本,大多数时候没有人知道谁对数据库做了什么。

第二个问题是我们有 4 个测试数据库,它们总是不正常,真正将它们排成一行的唯一方法是从实时数据库进行恢复。

我坚信这样的过程需要简单、直接且易于使用,才能帮助开发人员,而不是阻碍他们。

我正在寻找的是使开发人员能够轻松地记录他们的数据库脚本以便它们可以作为发布过程的一部分运行的技术/想法。 开发人员希望遵循的流程

任何故事、用例甚至链接都会有所帮助。

最佳答案

对于这个问题,我选择使用迁移工具:Migratordotnet .

通过迁移(在任何工具中),您有一个简单的类用于执行更改和撤消它们。这是一个例子:

[Migration(62)]
public class _62_add_date_created_column : Migration
{
public void Up()
{
//add it nullable
Database.AddColumn("Customers", new Column("DateCreated", DateTime) );

//seed it with data
Database.Execute("update Customers set DateCreated = getdate()");

//add not-null constraint
Database.AddNotNullConstraint("Customers", "DateCreated");
}

public void Down()
{
Database.RemoveColumn("Customers", "DateCreated");
}
}

此示例展示了如何处理易变更新,例如将新的非空列添加到具有现有数据的表中。这可以很容易地实现自动化,并且您可以轻松地在版本之间切换。

这对我们的构建来说是一个非常有值(value)的补充,并且极大地简化了流程。

我在这里发布了 .NET 中各种迁移框架的比较:http://benscheirman.com/2008/06/net-database-migration-tool-roundup

关于c# - 数据库部署策略 (SQL Server),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/504909/

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