【问题标题】:Automatically migrate an application's database when the application is updated更新应用程序时自动迁移应用程序的数据库
【发布时间】:2011-07-08 17:26:55
【问题描述】:

我想知道是否有人知道如何根据版本自动进行内务管理和更新数据库的良好框架或建议。

例如,假设我们使用的是 1.1 版,而软件升级到了 2.0 版。为了兼容,需要在 1.1 和 2.0 之间发生某些事情。

  • 1.2 新增表
  • 1.3 删除了旧表并更改了一些字段名称
  • 1.4 添加表a和b的关系。

因此,为了让 2.0 版在 1.1 版数据库上运行,它需要在允许应用程序运行之前按顺序执行上述过程。

我们之前的做法是将版本号存储在数据库的一个字段中。一个类将继承一个基类并称自己为Update + 版本号,例如Update1.2。 每个类都会执行其所需的任务并更新版本号并继续该过程。

必须有某种框架来解决这个问题,或者至少是推荐的做事方式?

【问题讨论】:

    标签: c# sql-server database-migration


    【解决方案1】:

    使用迁移框架,例如MigratorDotNet,我们在公司使用并且非常满意。随着应用程序的发展,您添加了更多迁移(以从迁移基类继承的类的形式并覆盖两个用于向上迁移和向下迁移的方法;在这些方法中,您使用一个简单的 API 来发出 SQL 语句)。每个迁移都有一个序列号或时间戳,MigratorDotNet 在数据库中维护一个表,用于跟踪已应用的迁移。在应用程序启动时,应用必要的迁移,以便数据库始终符合应用程序代码的要求。

    换句话说,你的做法是正确的,但确实有框架。 :-)

    【讨论】:

    • @Martin:很高兴听到这个消息。顺便说一句,文档使迁移看起来只能由 NAnt 任务、MSDeploy 目标或通过它们自己的控制台应用程序触发,但您也可以trigger it directly from your application code
    猜你喜欢
    • 2016-01-15
    • 2013-08-03
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    相关资源
    最近更新 更多