2015-11-05 44 views
0

我最近從.edmx切換到Code First,並試圖執行遷移。在DbMigration的Up()函數中調用CreateTable之前是否可以確定表是否存在?我有一個初始遷移集來創建這些表,但現有數據庫不應該應用此初始遷移。確定執行EF遷移時是否存在表格

我使用EF 6.1和.Net 4.6

+0

你總是可以用裸ddl sql調用'Sql(...)'來檢查是否存在,然後在不存在的情況下添加表。 –

+0

是的,但它會要求我使用原始的sql來創建表而不是流利的api。 –

+1

嗯,我想你可以手動添加一個條目到_MigrationHistory表中,但這可能只是一個工作,圍繞 – Vlad274

回答

0

如果你的數據庫等於初始遷移執行此命令:

Update-Database -Script -IgnoreChanges -SourceMigration: $InitialDatabase 

後,對於每一個新的遷移執行:

Update-Database -Script -SourceMigration: $InitialDatabase 

這個命令將檢查每個遷移是否已經應用到數據庫,如果是則不會再應用它。因此,無論數據庫處於哪種狀態,生成的遷移腳本都能正常工作。

+0

有沒有一個程序化的方法呢?我在應用程序啓動時運行遷移。 –

+0

如果不應用初始遷移,則必須執行帶-IgnoreChanges的命令,但在此之後,您可以通過將代碼放入代碼中來啓用自動遷移Database.SetInitializer(新的MigrateDatabaseToLatestVersion ()); – Aleksa