RedGate ReadyRoll 更便宜的替代品

Cheaper alternative for RedGate ReadyRoll

RedGate ReadyRoll 是一个非常棒的数据库版本控制工具,它就像一个魅力。但唯一的缺点 - 价格。 我研究了使用什么并找到了 DBUp、Envolve...这些工具很好但是:

  1. 无法定义 Up 和 Down 脚本来应用和回滚迁移
  2. 根据名称顺序而非创建时间应用迁移。这不是什么大问题,因为开发人员可以根据时间给出名称但是...

当开发人员使用的不是共享数据库而是他们自己的数据库并单独更改数据库架构时,这些工具不允许在不同的分支中进行开发。当 Team Lead 必须在分支之间切换或当 QA 必须在掌握功能之前测试功能时如何处理这些问题 - 这对我来说是一个悬而未决的问题。

使用 SSDT - 作为一个例子,但如果需要对 DATA 而不仅仅是模式做一些事情,它会让生活变得非常困难。如果使用基于迁移的方法可以非常简单地完成什么 - 当尝试使用基于状态的方法时,这将成为一个真正的大问题。

有人可以推荐一些使用基于迁移的方法进行数据库版本控制的工具吗?它可以与 .NET 堆栈一起使用并且是免费的或付费的,但比 RedGate 便宜?

谢谢

P.S.

如果仅将 Entity Framework 用于迁移会怎么样?没有实体等。创建数据库上下文并做所有事情只是为了创建具有 Up/Down 的迁移文件,然后在那里编写脚本或定义 sql 文件以应用 up/down 迁移更改。唯一的问题 - 这是快照。它将如何与它一起工作。 有人用过这种方法吗?

ReadyRoll 还包含 Core Edition,如果您还拥有 Visual Studio Enterprise 许可证,则这是一项免费权利。我承认如果您有 VS 社区或专业版,此信息不是很有帮助。

我们决定使用 EF Code First 迁移来完成我们需要的工作。如果将它与 DbUp 进行比较 - EF Code First 迁移包含 Down 脚本,它允许我们将数据库回滚到任何目标迁移脚本。 是的,它不能替代 ReadyRoll,我不得不承认没有任何类似的产品让我感到惊讶。 但它满足了我们的需要,经过 1 个多月的使用,我可以说 - 它符合我们的需求。

因为我们仅将 EF Code First 用于迁移脚本,所以描述的团队协作没有问题here,因为如果您的上下文没有任何实体,快照始终相同。