我很高興能夠跨越到使用DAC Fx和聲明性數據庫開發。我面臨的主要障礙是如何處理跨多個不同版本模式的複雜數據遷移。在舊世界中,我們可以簡單地按順序運行所有升級腳本,這可以確保數據遷移時模式處於正確的狀態。當升級路徑是動態時,這是如何工作的?數據層應用程序框架(DAC Fx)中的複雜數據遷移
例如,假設有在現有的情況下,我的架構(DACPAC1-4)的幾個版本:
- DACPAC1:TableA的存在,並且有
- DACPAC2有價值的客戶數據:表A已被棄用,取而代之tableB和規範化的tableC;添加新的 表D
- 後部署腳本:將數據從表A移動到新表B和 tableC;降TABLEA
- DACPAC3:表C有一個新的,可爲空columnX
- 部署後腳本:填充基礎上提出 空列
- DACPAC4:tableC.columnX是不可爲空
如果我需要能夠支持將DACPAC1-3服務器升級到最新的DACPAC4,我現在必須以足夠聰明的方式編寫我的預部署和部署後腳本,以檢測目標上的哪個DACPAC並按順序正確處理數據遷移步驟。此外,我不能簡單地重複使用我最初編寫的天真的後期部署腳本,因爲它們依賴於模式的中間版本。
在此先感謝您的任何建議!