如何自动将实体模型更改部署到数据库?

2024-06-24

目前我使用 Visual Studio 数据库项目,因此我可以一键将更改部署到数据库并将数据保留在数据库中。

现在我希望能够在实体框架中创建模型并一键部署。

所以我得到了从实体框架创建数据库的sql脚本。我可以运行此脚本来创建数据库,但我想将数据保留在数据库中。

有什么办法可以做到这一点吗?有什么工具可以做到这一点吗?我应该用 T4 自己生成它吗?

我使用 CI,所以我需要能够经常部署。我想要类似于 Visual Studio 数据库项目部署的东西,但使用实体框架生成的数据库。


液体碱 http://www.liquibase.org/是一个数据库变更管理工具。它是用 Java 实现的,但可以使用命令行版本来控制数据库升级(.NET 版本正在开发中)。

如果您需要一些建模工具支持那么电源架构师 http://code.google.com/p/power-architect/可以与液体碱 http://www.liquibase.org/.

与管理数据库模式升级相关的问题很微妙。对于一些背景阅读,我建议:

  • 进化数据库设计 http://martinfowler.com/articles/evodb.html
  • 让您的数据库处于版本控制之下 http://www.codinghorror.com/blog/2008/02/get-your-database-under-version-control.html

Update

创建一个名为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

第一个命令将创建一个名为的 XML 文件数据库变更日志.xml包含提取的数据模型。
第二个命令是可选的,但如果您想将新更改应用于当前数据库,则很有用。它将提取的变更集标记为已在数据库中执行。

现在您已经有了一个起点,您可以继续将新的变更集添加到数据库变更日志.xml文件。要应用这些新更改,只需运行以下命令:

liquibase update

这与您用于全新数据库的命令相同。在更新操作期间,liquibase 会将 XML 文件中的变更集与已应用于目标数据库的变更集进行比较。

对于更高级的用例,我建议阅读 liquibase 文档,以下答案也可能有所帮助:

  • 使用 liquibase 比较数据库并生成 sql 脚本 https://stackoverflow.com/questions/8397488/comparing-databases-and-genrating-sql-script-using-liquibase/8408334#8408334
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自动将实体模型更改部署到数据库? 的相关文章

  • 如何列出表外键

    有没有办法使用 SQL 列出给定表的所有外键 我知道表名称 架构 我可以将其插入 您可以通过 information schema 表来完成此操作 例如 SELECT tc table schema tc constraint name t
  • ORA-01719: OR 或 IN 的操作数中不允许有外连接运算符 (+)

    运行查询时出现错误 ORA 01719 OR 或 IN 的操作数中不允许有外连接运算符 01719 00000 OR 或 IN 的操作数中不允许使用外连接运算符 原因 or 子句中出现外连接 动作 如果A和B是谓词 要得到 A 或B 的效果
  • 有没有办法刷新 Oracle 中 PL/SQL 的输出?

    我有一个从 shell 脚本中调用的 SQL 脚本 需要很长时间才能运行 目前它包含dbms output put line不同点的声明 这些打印语句的输出会出现在日志文件中 但仅在脚本完成后才会出现 有什么方法可以确保脚本运行时输出出现在
  • 如何在不拉动所有对象的情况下编辑或添加到特定字段

    我怎样才能做到这一点 a myFavorits Add 而不将所有对象拉到 vara 因为a有很多数据 我不想全部拉出来a对象 但我找不到方法来做到这一点 我想做 lambda 和 linq 而不返回一些东西 但 linq 总是返回一些东西
  • 从多个表插入表

    嘿 我有一个连接表 连接两个不相关的表 两个表都有ID的 我需要选择ID从每个表中使用WHERE具有不同的值 例如这就是我的看法 INSERT INTO c aID bID VALUES SELECT a ID WHERE a Name M
  • 案例与解码

    参考之前的一篇question https stackoverflow com questions 3193384 display sql custom text from table column result 我想知道是否总是可以更换D
  • 等待异步TaskEx

    What is TaskEx In http www i programmer info programming c 1514 async await and the ui problem html start 1 http www i p
  • Sql Server 2008 强制日期从 dd/MM/yyyy 到 MM/dd/yyyy

    我在 sql server 2008 上遇到了一个奇怪的问题 我试图用dd MM yyyy格式写入sql server 2008 但是插入日期后它会自动转换为MM dd yyyy 注意 我的电脑时钟格式是dd MM yyyy 我的报告查看器
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • Visual Studio 与 Visual Web 开发人员

    我正在尝试使用编写一个网络应用程序ASP NET MVC 我更喜欢C 作为编程语言 哪种 IDE 更适合用于此目的 视觉工作室 or 可视化网络开发人员 IDE 有哪些功能 使用其中一种比另一种有什么好处 提前致谢 据我所理解 可视化网络开
  • 在Django中通过ManyToMany关系添加一个对象

    Django 的 ManyToMany 字段 https docs djangoproject com en dev ref models fields django db models ManyToManyField可以使用填充my fi
  • 当 COUNT(*) 为 NULL 时,GROUP BY 返回 0

    这是我原来的查询 SELECT CAST IndexedDate as varchar COUNT AS Logins FROM Table WHERE EventType Login AND IndexedDate gt DATEADD
  • 使用 C# 检索 SQL Server 中具有 varchar 数据类型的字段的大小

    我正在使用 VS 2010 和 SQL Server 2008 在 ASP NET 中创建一个项目 我想检索具有以下内容的列的大小varchar数据类型 e g Varchar 20 我想要 20 而不是最大可能的大小varchar使用 C
  • SQL LIKE 实际上是如何工作的

    例如 当我有这样的字符串时 ABBBCSLAK JDK ASAAAAFJKDSKJFSDF 当我像这样使用 SQL 时 SELECT FROM table WHERE column LIKE JDK 当服务器访问 JDK 时到底会发生什么
  • Oracle TO_DATE 函数中跳过字符

    我正在导入 tsv 中具有 SQL Server 格式日期的数据 yyyy mm dd hh24 mi ss mmm 使用 SQL Developer 的导入数据向导导入 Oracle 数据库 我怎样才能忽略 mmm用于将它们导入 DATE
  • C# Visual Studio 动态代码片段

    我正在开发一个 WinForms 项目 每天都会执行一些重复性的任务 所以我认为创建代码片段 https msdn microsoft com en us library ms165394 v vs 110 aspx会帮助我 但它仅适用于固
  • 计算给定小时内使用了多少分钟

    给定开始和结束时间 我想知道给定时间内有多少分钟 create function CalcMinsInHour start datetime end datetime hour int returns int as begin Lookin
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • 使用非管理员帐户时,SQL Linked Server 返回错误“不存在登录映射”

    我有一个本地 SQL Server 2008R2 我已将链接服务器配置为远程数据库 当我使用 SQL 登录帐户登录本地服务器时 链接服务器工作得很好sysadmin服务器角色 我可以查询远程服务器 因此我知道链接服务器设置是正确的 但是 如
  • mysql 中的 SELECT UNION 和 ORDER BY.. 如何?

    我想从单个表中获取所有行 但以不同的方式对它们进行排序 例如我写 SELECT FROM table1 ORDER BY fieldA ASC LIMIT 3 UNION SELECT FROM table1 ORDER BY FieldB

随机推荐

  • 我的程序关于查找因子的问题

    这是我的旧问题的延续 该程序在没有 而真实 主要的 if input 再试一次 是 否 strip upper 否 休息 但是当我添加它时 问题出现了 我试图通过询问用户一个号码来启动程序 它显示一个因素 然后我循环它并询问用户是否想要另一
  • 在 Express 中间件中访问会话对象

    这是我的 Express 中间件堆栈 var server express use express cookieParser use express session secret Secret use express bodyParser
  • 更好的日期时间?或者使用默认值(DateTime)作为NULL?

    我正在设计一个带有私人消息系统的 C NHibernate 网站 我希望管理员检查用户是否以及何时阅读消息 并一起突出显示用户尚未阅读的那些消息 为了实现这两个目标 我找到了两个选择 Option 1 class Message DateT
  • jQuery 将元素集包装在 div 中

    你好 我想使用 jQuery 将元素集包装在 div 中 HTML h3 Title h3 ul li Feature li li Feature li ul h3 Title h3 ul li Feature li li Feature
  • ZedGraph 自定义图表

    I want to make wtih ZedGraph following dynamically chart How to make ZedGraph axes reverse and and time axis Thanks UPD
  • Apache Cordova 混合应用程序中的 ES6 模块/导入抛出 MIME 类型错误

    我正在尝试在使用 Apache Cordova 构建的混合移动应用程序中使用 ES6 模块 不幸的是 Cordova 似乎在没有 MIME 类型的情况下提供模块 这会在 WebView 中引发错误 在 Chrome 63 和 64 beta
  • SQL proc计算7位和12位upc的校验位

    我不得不再次在互联网上搜索这段代码 所以我想我会把它放在这里 这样我下次就能更快地找到它 希望你也能更快地找到它 检查一下 下面的代码可以检查所有 GTIN 中的数字 EAN8 EAN13 EAN14 UPC A UPC E CREATE
  • 如果提交格式不正确,是否可以拒绝 Github 上的提交?

    正如中提到的this https stackoverflow com a 6742691 1501285答案 可以在 Github 提交中引用问题 是否可以拒绝它的提交not格式化成这样 Example fix gh 12 foo bar是
  • RecyclerView 调整大小后 onItemClickListeners 行为异常

    我正在开发捏合缩放 RecyclerView 并具有捏合缩放功能 但一旦放大 onItemClickListeners 就会位于错误的位置 下面是修改后的RecyclerView的代码 我还做了一个托管在 GitHub 上的简单演示 htt
  • 使用 java EE 6 注释进行 Servlet 过滤?

    是否可以在 EE 6 中使用 ApplicationPath 和 Path 注释来模拟 servlet 过滤器链 Example ApplicationPath api class Filter extends Application Pa
  • 谷歌地图上的自定义标记

    问题详情 显示默认图标 我期待标记的自定义图标 我在下面的代码中遗漏了什么吗 我正在使用 Laravel 5 6 12 和 vue js 并尝试在谷歌地图中显示自定义图标 我的代码在模板下面
  • 在列表中重新排序 EKReminder

    是否可以重新订购EK提醒 http developer apple com library ios documentation EventKit Reference EKReminderClassRef Reference Referenc
  • 如何设计销毁会话并从控制器注销?

    设计销毁会话并从控制器注销 if something is not kosher 1 log this event 2 send notice redirect to destroy user session path and return
  • 在嵌套列表中查找索引位置以进行匹配

    我想找到嵌套列表和目标值 11 的匹配索引 Data f lt list list 1 2 3 list 4 5 list 8 list 11 12 目标值 11 的所需输出 c 2 3 2 1 Printed f 1 1 1 1 1 1
  • 每一列用一条线绘制,x 轴 R 上显示时间序列

    你可以找到我的数据集here https drive google com open id 0B8clGpnMSCjUdTRXNjBNMktkdVE 根据这些数据 我想绘制 每条线 x y 1 x y 5 x y 1 x y 5 因此 更清
  • 我们可以在 Ionic 中使用 Proguard 吗?

    我是 Ionic 的新手 对它提供的核心插件和设施不太了解 我听说 Proguard 可以帮助构建安全的 Android 应用程序 所以我的问题是 是否可以使用 Proguard 使 Ionic 应用程序更安全 Proguard 用于收缩
  • 我们是否无法在 .NET 4.0 中的通用对象中使用 Interop 对象?

    我正在 VS 2010 中工作 致力于将我们的应用程序升级到 NET 4 该应用程序是以 Excel 为基础构建的 我们希望利用 NET 的一些改进来使用 Excel 但我遇到了一个奇怪的错误 该错误似乎是由在通用字典中使用 Excel I
  • 使用 Google 登录按钮退出网站

    我正在开发一个项目 用户可以使用他们的 Google 帐户登录 一旦他们登录 他们就会被带到另一个页面 用户可以在多个不同页面之间浏览 每个页面都有一个注销按钮 我正在尝试实现它 以便如果用户单击注销 并且他们使用 Google 登录 则会
  • Process Explorer 报告的进程虚拟内存大小不合理

    在寻找内存泄漏时 我最近注意到 Process Explorer Microsoft Sysinternals v16 26 的 procexp exe 报告的虚拟内存值非常高 就像大约 2 1TB 其中我的笔记本电脑具有运行 Win 10
  • 如何自动将实体模型更改部署到数据库?

    目前我使用 Visual Studio 数据库项目 因此我可以一键将更改部署到数据库并将数据保留在数据库中 现在我希望能够在实体框架中创建模型并一键部署 所以我得到了从实体框架创建数据库的sql脚本 我可以运行此脚本来创建数据库 但我想将数