目前我使用 Visual Studio 数据库项目,所以我可以一键部署对数据库的更改并将数据保存在数据库中。
现在我希望能够在实体框架中创建模型并一键部署。
所以我得到了 sql 脚本来从实体框架创建数据库。我可以运行此脚本来创建数据库,但我想将我的数据保存在数据库中。
有什么办法吗?有什么工具可以做到这一点?我应该使用 T4 自己生成它吗?
我使用 CI,所以我需要能够经常部署。我想要类似于 Visual Studio 数据库项目部署的东西,但使用实体框架生成的数据库。
目前我使用 Visual Studio 数据库项目,所以我可以一键部署对数据库的更改并将数据保存在数据库中。
现在我希望能够在实体框架中创建模型并一键部署。
所以我得到了 sql 脚本来从实体框架创建数据库。我可以运行此脚本来创建数据库,但我想将我的数据保存在数据库中。
有什么办法吗?有什么工具可以做到这一点?我应该使用 T4 自己生成它吗?
我使用 CI,所以我需要能够经常部署。我想要类似于 Visual Studio 数据库项目部署的东西,但使用实体框架生成的数据库。
Liquibase是一个数据库变更管理工具。它是用 Java 实现的,但可以使用命令行版本来控制您的数据库升级(.NET 版本正在开发中)。
如果您需要一些建模工具支持,那么 Power 架构师可以与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 文档,以下答案也可能有所帮助:
为了能够从实体框架模型生成 Visual Studio 数据库项目,您需要安装Entity Designer Database Generation Power Pack。
您需要将数据库项目添加到您的解决方案中,然后创建具有相同名称的edmx 模型。然后右键单击 edmx 工作区并选择Generate Database from Model和从生成菜单Sync Database Project。
然后,您可以将此 Sql 项目从 Visual Studio 部署到 Sql Server。