2015-05-11 128 views
0

我們有一個運行EF6的項目,現在已經激活遷移。我們遇到的問題是,我們需要在創建數據庫時需要添加大量數據。這很好,直到我們需要在遷移部分添加數據,因此它成爲SQL腳本的一部分。因爲當我們在我們的開發機器上嘗試創建新數據庫時,遷移步驟在初始化器的種子方法和遷移步驟中的一些數據依賴於種子數據之前完成。實體框架6遷移:如何在數據庫初始化時禁用自動更新數據庫?

有沒有一些方法可以在沒有任何遷移的情況下獲取初始數據庫以及初始化程序的種子數據?或者我們需要將關鍵數據移至InitialCreate鏡像Up方法嗎?

生產數據庫將無法在此階段被清除,因此我們需要將所有新的生產數據添加到遷移步驟。


編輯:最後,我們剛搬到受影響的數據向上方法遷移,而不是我想要做到這一點,但我們在那裏的時間短,這解決了這個問題。

回答

0

遷移還有一種Seed方法,您可以在Up()方法之後重寫該方法。如果數據可能存在,您可以使用AddOrUpdate命令。 http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-3

+0

配置中的Seed方法僅在所有更新完成後運行。因此,如果我執行'Update-Database -TargetMigration:InitialCreate'並且沒有數據庫,那麼數據庫將被創建,但Seed方法不會被執行。 – SpaceOgre

+0

您是在談論數據庫初始值設定項中的Seed方法還是遷移中的種子方法?關於遷移種子方法的文檔說:「Seed方法的目的是讓您在Code First創建或更新數據庫後插入或更新測試數據。創建數據庫時以及每次數據庫模式爲數據模型更改後更新。「 –

+0

我正在談論遷移中的種子方法。奇怪的是我已經閱讀了你剛剛寫的內容,但是在Seed方法中,這個註釋是自動生成的:'//在遷移到最新版本後將調用此方法。 – SpaceOgre

相關問題