2013-05-08 83 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