2016-06-08 47 views
4

正如EF Code First中的常見情況,我生成了一個「初始創建」遷移文件,其中位於過時的數據庫模型(我正在開發該應用程序該模型仍在改變)。現在我在代碼中定義了一個「新模型」,而不是創建一個新的遷移,因爲我只想更新已經存在的文件,因爲它仍然是最初的創建遷移。如何在同一個.cs文件上重新創建初始遷移

我已經使用這個沒有任何的運氣

更新數據庫試圖-targetmigration $ initialcreate

它返回

Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration. 
You can use the Add-Migration command to write the pending model changes to a code-based migration. 

我也試過這一個,但它總是創建一個新的.cs文件

附加遷移InitialCreate

我會appreaciate你的幫助

+0

從我的理解,你不想創建一個新的遷移?如果你可以嘗試刪除整個遷移文件夾並再次執行'Enable-Migration'。您將看到新的'InitialCreate'文件將包含您的模型。但是,這似乎並不合適,因爲代碼優先遷移的目的是列出不同的遷移週期,其中包含您在模型中添加的內容(無論是類還是類)屬性)。你可以選擇回滾到以前的遷移(你已經用'-targetmigration'完成了),所以它非常靈活。 –

+0

另外,如果上述不起作用,您可以嘗試'Update-Database -TargetMigration:0'。 –

+0

@ShawnYan是的,我不想創建新的遷移,因爲我的模型仍在改變,所以沒有「遷移」。 –

回答

4

在這裏你可以看到我是如何解決這個。

請小心這種方法,因爲在我的情況下我仍處於開發階段,因此我不需要保留數據庫和數據。

如果你想覆蓋當前「InitialCreate」文件並重新生成DB,請按照下列步驟操作:

1)運行在軟件包管理控制檯:

添加遷移InitialCreate -force

2)刪除物理數據庫(使用SSMS,T-SQL或者您喜歡)

3)包管理器控制檯運行:

更新,數據庫-TargetMigration:0 | update-database -force |更新數據庫-force

如果你不關心當前的「InitialCreate」文件本身,要創建一個新的和重新生成DB,請按照下列步驟操作:

1)刪除當前的「InitialCreate」。CS文件

3)運行在軟件包管理控制檯:

添加遷移InitialCreate

4)刪除物理數據庫(使用SSMS,T-SQL或者您喜歡)

4)運行包管理器控制檯:

Update-Database -TargetMigration:0 | update-database -force |更新數據庫的力

相關問題