我正在尋找一個遷移框架,該框架將與使用.NetTiers的現有項目一起工作,該項目是需要CodeSmith生成數據訪問代碼的較舊的ORM。在現有數據庫中使用FluentMigrator
我們有一些圓屋的經驗,我們已經成功地使用它。在部署運行Octopus Deploy時,我們也能夠自動部署模式更改。相當簡單,因爲它只是一組SQL腳本。
我一直有興趣轉向FluentMigrator。我喜歡的FM DSL,我發現this SO question非常有用,但有幾件事情我不神交:
- 什麼是導入現有的數據庫模式[*]以正確的方式?
- 將遷移部署到生產環境的正確方法是什麼[**]?
我的假設是我使用SQL Server工具生成單個腳本並使用ExecuteEmbeddedSql作爲初始遷移。那是對的嗎?
[**]運行遷移似乎有三種主要方式(命令行,NAnt runner,MSBuild runner)。他們需要訪問數據庫才能運行。想象一下,我們希望將其部署到PROD環境。開發人員和構建服務器無法訪問此環境。你如何在這樣的環境中跑這些跑步者?
我們通常的部署過程是生成一組需要部署爲部署的SQL腳本。 Ops將它們作爲部署的一部分運行,或者自動作爲Octopus Deploy進程(powershell)的一部分,或者如果部署不在Octopus中則手動運行)。
我們在這個特定項目中遇到的一個複雜情況是.NetTiers。這意味着我們必須使用.NetTiers來運行CodeSmith代碼生成來構建數據訪問層,然後才能對這些實體和數據服務進行編碼。因此,我們的工作流程必須是:
- 寫遷移
- 運行遷移升級數據庫(針對特定.NetTiers數據庫)
- 具體對陣.NetTiers數據庫運行.NetTiers(中央構建服務器) 針對新.NetTiers
- 代碼生成的實體,數據庫字段等
我很想拋售.NetTiers,但可悲的是重構當前不是一個可行的選擇。
.sql文件需要有生成操作:'嵌入式Resource' –
@MortenHolmgaard正確的,對不起,我錯過了這一點。 – Junto
我遇到了同樣的問題,因爲我們在已經成熟的數據庫上開始使用FluentMigrator。我們也有一些初始數據,所以我使用RedGates產品爲模式和數據創建腳本 –