我最近從.edmx切換到Code First,並試圖執行遷移。在DbMigration的Up()
函數中調用CreateTable
之前是否可以確定表是否存在?我有一個初始遷移集來創建這些表,但現有數據庫不應該應用此初始遷移。確定執行EF遷移時是否存在表格
我使用EF 6.1和.Net 4.6
我最近從.edmx切換到Code First,並試圖執行遷移。在DbMigration的Up()
函數中調用CreateTable
之前是否可以確定表是否存在?我有一個初始遷移集來創建這些表,但現有數據庫不應該應用此初始遷移。確定執行EF遷移時是否存在表格
我使用EF 6.1和.Net 4.6
如果你的數據庫等於初始遷移執行此命令:
Update-Database -Script -IgnoreChanges -SourceMigration: $InitialDatabase
後,對於每一個新的遷移執行:
Update-Database -Script -SourceMigration: $InitialDatabase
這個命令將檢查每個遷移是否已經應用到數據庫,如果是則不會再應用它。因此,無論數據庫處於哪種狀態,生成的遷移腳本都能正常工作。
有沒有一個程序化的方法呢?我在應用程序啓動時運行遷移。 –
如果不應用初始遷移,則必須執行帶-IgnoreChanges的命令,但在此之後,您可以通過將代碼放入代碼中來啓用自動遷移Database.SetInitializer(新的MigrateDatabaseToLatestVersion
你總是可以用裸ddl sql調用'Sql(...)'來檢查是否存在,然後在不存在的情況下添加表。 –
是的,但它會要求我使用原始的sql來創建表而不是流利的api。 –
嗯,我想你可以手動添加一個條目到_MigrationHistory表中,但這可能只是一個工作,圍繞 – Vlad274