目前我使用 Visual Studio 数据库项目,因此我可以一键将更改部署到数据库并将数据保留在数据库中。
现在我希望能够在 Entity Framework 中创建模型并一键部署。
所以我得到了从 Entity Framework 创建数据库的sql脚本。我可以运行此脚本来创建数据库,但我想将数据保留在数据库中。
有什么办法可以做到这一点吗?有什么工具可以做到这一点吗?我应该用 T4 自己生成它吗?
我使用 CI,所以我需要能够经常部署。我想要类似于 Visual Studio 数据库项目部署的东西,但使用 Entity Framework 生成的数据库。
最佳答案
Liquibase是一个数据库变更管理工具。它是用 Java 实现的,但可以使用命令行版本来控制数据库升级(.NET 版本正在开发中)。
如果您需要一些建模工具支持,那么 Power architect可与 liquibase 一起使用.
与管理数据库模式升级相关的问题很微妙。对于一些背景阅读,我建议:
更新
创建一个名为liquibase.properties的文件来保存数据库详细信息:
url=jdbc:sqlserver://localhost:1433;databaseName=test
username=myuser
password=mypass
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
classpath=C:\\Program Files\\Microsoft SQL Server 2005 JDBC Driver\\sqljdbc_1.2\\enu\\sqljdbc.jar
changeLogFile=database-changelog.xml
当对现有数据库使用 liquibase 时,您可以运行以下命令:
liquibase generateChangeLog
liquibase changelogSync
第一个命令将创建一个名为 database-changelog.xml 的 XML 文件,其中包含提取的数据模型。
第二个命令是可选的,但如果您想将新更改应用于当前数据库,则很有用。它将提取的变更集标记为已在数据库中执行。
现在您已经有了一个起点,您可以继续将新的变更集添加到 database-changelog.xml 文件中。要应用这些新更改,只需运行以下命令:
liquibase update
这与您用于全新数据库的命令相同。在更新操作期间,liquibase 会将 XML 文件中的变更集与已应用于目标数据库的变更集进行比较。
对于更高级的用例,我建议阅读 liquibase 文档,以下答案也可能有所帮助:
关于sql - 如何自动将实体模型更改部署到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746908/