我正在寻找一个迁移框架,该框架将与使用 .NetTiers 的现有项目一起使用,这是一种需要 CodeSmith 生成数据访问代码的旧 ORM。
我们有一些roundhouse的经验,并且我们已经成功地使用了它。在 Octopus Deploy 之外运行部署时,我们还能够自动部署架构更改。相当简单,因为它只是 SQL 脚本的集合。
我一直对迁移到 FluentMigrator 很感兴趣。我喜欢 FM DSL,我发现这个 SO 问题非常有用,但是有几件事我不明白:
- 导入现有数据库模式 [*] 的正确方法是什么?
- 将迁移部署到生产环境的正确方法是什么 [**]?
[*] 我的假设是我使用 SQL Server 工具生成单个脚本并使用 ExecuteEmbeddedSql 作为初始迁移。那是对的吗?
[**] 运行迁移似乎有三种主要方式(命令行、NAnt 运行器、MSBuild 运行器)。他们需要访问数据库才能运行。想象一下,我们想将它部署到 PROD 环境。开发人员和构建服务器无法访问此环境。您如何针对该环境运行这些跑步者?
我们通常的部署过程是生成一组 SQL 脚本,这些脚本需要作为部署的一部分进行部署。Ops 将这些作为部署的一部分运行,或者作为 Octopus 部署过程 (powershell) 的一部分自动运行,或者如果部署在 Octopus 之外,则手动运行。
我们在这个特定项目中遇到的一个复杂问题是 .NetTiers。这意味着我们必须使用 .NetTiers 运行 CodeSmith 代码生成来构建数据访问层,然后才能针对这些实体和数据服务进行编码。因此,我们的工作流程必须是:
- 写迁移
- 运行迁移以升级数据库(针对特定的 .NetTiers 数据库)
- 针对特定的 .NetTiers 数据库(中央构建服务器)运行 .NetTiers
- 针对新 .NetTiers 生成的实体、数据库字段等的代码
我很想转储 .NetTiers,但遗憾的是,重构目前不是一个可行的选择。