2013-02-22 64 views
2

我已經從項目中刪除了開發數據庫和Migrations文件夾。當使用我的項目開發數據庫重新運行單元測試時。我不明白爲什麼運行更新的數據庫給我爲什麼我無法將Entity Framework遷移到初始狀態?

PM> Update-Database 
Specify the '-Verbose' flag to view the SQL statements being applied to the target database. 
Applying code-based migrations: [201302201840012_wieleDoWielu]. 
Applying code-based migration: 201302201840012_wieleDoWielu. 

爲什麼遷移:201302201840012_wieleDoWielu被記住?我如何刪除它?存儲在哪裏?

問候 普熱Staniszewski

+0

也許在你的數據庫中的表__MigrationHistory?檢查'MigrationId'列。你爲什麼要刪除這個呢? – Raxr 2013-02-22 13:45:50

+0

我以這種方式測試該 1.刪除遷移夾 2.運行Enable-遷移-EnableAutomaticMigrations -Force該創建的文件夾的遷移 3.刪除數據庫 4.運行單元測試,創建數據庫 5.從刪除[DBO] 。[__ MigrationHistory] ​​ 6.運行Add-Migration -IgnoreChanges 並獲得7.由於以下顯式遷移未決,因此無法生成顯式遷移:[201302201810047_InitialCreate,201302201840012_wieleDoWielu]。在嘗試生成新的顯式遷移之前應用待處理的顯式遷移。 – 2013-02-22 14:03:32

+0

在添加遷移之前,您是否嘗試過「更新數據庫」?它不應該在你的情況下,但每次我有這個錯誤修復它。 – Judo 2013-02-22 14:16:11

回答

9

這裏有一個答案。請恢復遷移文件夾及其遷移文件(恢復到您的項目)。然後按照我的步驟進行操作 http://pawel.sawicz.eu/entity-framework-reseting-migrations/

1)Update-Database -Targetmigration:0 - 它是關鍵!第一
2)消滅表/遷移(你沒有刪除整個文件夾)
3)添加遷移初始化
4)更新數據庫

+0

我只是做了它從你的文章之前,你寫這個答案(谷歌:)它不到風度幫我 – 2013-02-22 14:59:10

+0

更新,數據庫後-Targetmigration:0所有表都與__MigrationHistory刪除也 – 2013-02-22 15:00:43

+0

不更新,數據庫-Targetmigration:0應該刪除數據庫中的所有表? – 2013-02-22 15:02:57

0

嘗試這些命令 Sqllocaldb.exe停止V11.0 Sqllocaldb.exe刪除V11.0

這應該刪除引用。在執行此操作之前,您可能必須註釋掉一些更改,然後在執行遷移之前將更改重新設置爲模型。

我是新手,希望我能理解你的問題,因爲它聽起來像我最近遇到的那個。

一個更持久的解決方案可能是將下面的代碼添加到您的Globel文件中,並將其替換爲您需要的代碼。此文章可以在下方還鏈接找到:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PersonContext>()); 

http://ilmatte.wordpress.com/2012/12/05/entity-framework-5-code-first-enabling-migrations-in-a-real-project/