2014-04-24 67 views
0

我試圖更新我的數據庫與我在實體模型(一些額外的表列)中所做的更改,但我不想丟棄&重新創建數據庫因爲它會刪除我所有的測試數據。以前我做過這些,並使用Seed方法創建一些基本數據,但現在我有很多我寧願保留的數據。EF6代碼第一次更新數據庫沒有刪除數據

我試圖運行更新數據庫,但我得到的錯誤:

There is already an object named 'ActivityNoteLines' in the database. 

望着遷移腳本我可以看到,它試圖創建表ActivityNoteLines。很顯然,我不想那樣做。然後我創建了一個初始遷移使用

Add-Migration InitialCreate –IgnoreChanges 

但現在當我運行update-database時,它認爲沒有變化!

我確信有可能做我想做的事,但我似乎無法讓它工作。如果我必須刪除&重新創建數據庫我會但想知道是否有人已成功更新並保留了數據。

+0

您使用的是什麼數據庫初始化程序? – Thewads

+0

@Thewads - 我使用CreateDatabaseIfNotExists,以前使用過DropCreateDatabaseIfModelChanges,這顯然是刪除我的所有數據。 – markpsmith

+1

如果您使用的是代碼優先遷移,請使用'MigrateDatabaseToLatestVersion'查看 – Thewads

回答

0

您遇到的問題是您的Migrations文件夾中的Create腳本想要創建所有表格。更新運行時,會查看錶dbo.MigrationHistory以查看哪些遷移腳本已經運行。您的數據庫在表中沒有創建,所以Update正試圖運行它。

您可以嘗試手動將條目添加到表中或編輯創建腳本並刪除向上和向下方法的內容。然後,當您運行更新時,它將運行創建腳本,該腳本不會執行任何操作,並將條目寫入MigrationHistory表。