数据库版本部署.实体框架迁移与SSDT DacPacs

Gus*_*avo 9 database-migration data-tier-applications fluent-migrator sql-server-2012 entity-framework-4.3

我有一个带有SQL Server的以数据为中心的应用程序.它将被部署的环境不在我们的控制之下,并且没有DBA(它们都是小型企业),因此我们需要尽可能自动地分发每个应用程序/数据库更新的过程.

除了应用程序版本之间的正常变化(有时候是不可预测的),我们已经知道我们需要为每个版本分发一些新的种子数据.有时,此种子数据将与我们系统中的其他数据相关.例如:在v2-v3更新过程中,我们可能需要插入2个新行的某些主数据,在v5-v6更新过程中需要插入其他5行.

EF

我们已经检查了Entity Framework Db Migrations(可用于自4.3.1版本以来没有Code-First的现有数据库),它以更自动和受控的方式表示传统的顺序脚本(如Fluent Migrations).

SSDT

另一方面,凭借不同的理念,我们检查了SSDT及其dacpac,快照以及部署前和部署后脚本.

问题是:

  1. 哪些技术/哲学更适合所描述的案例?

  2. 可以使用的任何其他技术/哲学?

  3. 还有其他建议吗?

提前致谢.

Dav*_*son 3

这是一个有趣的问题。在 Red Gate,我们希望在今年晚些时候解决这个问题,因为我们有许多客户询问我们如何提供简单的部署包。我们确实有SQL Packager,它本质上是将 SQL 脚本包装到 exe 中。

我想说 dacpac 旨在涵盖您所描述的用例。然而,据我了解,它们的工作原理是在应用于目标时动态生成部署脚本。缺点是您不会有部署预先测试的 SQL 脚本时可能获得的温暖模糊的感觉。

我之前没有尝试过使用 dacpac 更新数据,所以我很想知道它的效果如何。据我记得,它会截断目标表并重新填充它们。

我没有 EF 迁移经验,因此我很想阅读有关此主题的任何答案。

  • 很抱歉你有这样的感觉,我不同意你的看法。格斯问了三个问题,我回答了第二个问题:“还有其他技术/哲学吗?”。是的,我提到了我负责的一个产品,这当然不违反规则。虽然我没有在愤怒中使用它们,但我已经测试了 dacpac 并了解它们的局限性。是的,我在 EF 迁移方面的实践经验有限,这就是我声明它的原因。 (2认同)