4

EF遷移看起來很酷,但有太多的「魔術」在進行,對於它實際正在做什麼的解釋很少。我想要做的就是設置遷移點並獲取DDL腳本 - 從一個遷移到另一個遷移的「差異」腳本或整個創建DDL腳本。使用實體框架4.3遷移而不依賴於實際的數據庫

問題是,所有的遷移命令似乎都依賴於實際存在的數據庫來執行一堆我不感興趣的東西。有沒有辦法繞過所有這些,只是使用遷移來生成腳本?

+0

我完全同意你關於Migrations(over)的設計。如果我可以執行除Update-Database之外的每個步驟而沒有數據庫,那麼整個概念在團隊環境中的工作會更好。 –

回答

0

這是discussed yesterday。遷移命令依賴於您的工作數據庫,因爲它們與__MigrationHistory表進行交互以獲取實際狀態並正確計算必須完成的更改。

如果你只需要創建腳本,你可以做到這一點通過更新,數據庫與其他參數:

爲整個數據庫創建腳本:

Update-Database -Script -SourceMigration:$InitialDatabase 

從遷移升級遷移創建腳本B:

Update-Database -Script -SourceMigration:"A" -TargetMigration:"B" 
+0

不幸的是,我無法運行第二個示例,因爲創建第二個遷移失敗,說我有明確的遷移掛起。真的非常令人沮喪,應該有一個選擇退出他們正在嘗試執行的「魔術」。 –

+0

我沒有說它會在沒有數據庫的情況下工作。數據庫是當前版本遷移的核心要求。您永遠不能有多個不適用於您的數據庫的遷移。如果你不喜歡它,你應該寧願自己處理數據庫升級 - 例如VS數據庫項目。 –

+0

顯然它取決於數據庫,我的觀點是,如果我明確設置遷移點並指定遷移點爲腳本,則完全沒有必要。考慮到它不符合我的要求,簡單地告訴我不要使用它是顯而易見的,並且有點sn sn。 –