2013-05-08 84 views
-1

如果我发布我的应用程序,并在2周内发布新的更新,并且我需要更改数据库,那么解决方案是什么?例如,在Android中,我将SQlite库重写Void以检查数据库版本。谢谢。如何在Monotouch中管理我的SQLite数据库版本?

+0

为什么你的Android解决方案不适用于iOS? – Bobson 2013-05-08 17:34:09

+0

@Bosbon,我提到的解决方案不是针对android的单声道,是与Java的普通安卓,我猜Sqlite库是不同的,例如我在monotouch中使用的那个有一个ORM实现,吨。所以这就是我问的原因。 – 2013-05-08 18:06:58

+0

你的问题真的很广泛 - 你能对你面临的问题更具体吗?在MonoTouch中没有针对数据库版本控制的特殊通用解决方案。 – Jason 2013-05-08 18:18:12

回答

5

有很多方法可以做到这一点,但这里有一个我在类似情况下使用的系统。

保留架构(和非事务数据)作为基准,并将版本号保留在数据库中。然后,无论何时更新程序,更改模式并将更改SQL保存在其自己的文件中。为这些文件命名,以便顺序编排这些文件,例如(000001AddTableX.sql000002RemoveColumnX.sql等)。然后编写一段代码来检查保存所有变更集的文件夹。然后,如果文件名中的变更集编号大于存储在数据库中的当前版本,请针对数据库运行变更集。

这有以下好处

  • 如果你使用源代码控制,您的架构的变更将被保存,当你在你的代码检查与代码中的(大概)相关的变化有关。
  • 您的更改集代码将经过充分测试,因为它将是您在开发过程中使用的确切代码。
  • 无论最终用户跳过多少次更新,他们都会在最终升级时以正确的顺序获取所有变更集。
+0

这是一个非常聪明的方式。 – Bobson 2013-05-09 17:51:08