2017-05-17 91 views
0

幾個星期前,我啓用了我的項目遷移,並在AspNetUsers表中添加了一個'ClientID'列。添加遷移錯誤

現在我試圖添加另一列:「名稱」。

我跑在Package Manager控制檯命令:

PM> Add-Migration "Name" 

而且我得到了以下錯誤:

Unable to generate an explicit migration because the following explicit migrations are pending: [20161081751088_InitialCreate, 20161091825212_ClientID]. Apply the pending explicit migrations before attempting to generate a new explicit migration.

我跑了一個更新的命令:

PM> Update-Database 

但是:

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

我在網上進行搜索,發現這個解決方案:

PM> Add-Migration InitialMigrations -IgnoreChanges 

但後來我又拿到了第一個錯誤:

Unable to generate an explicit migration because the following explicit migrations are pending: [20161081751088_InitialCreate, 20161091825212_ClientID]. Apply the pending explicit migrations before attempting to generate a new explicit migration.

我怎樣才能解決這個問題?

+0

如果您已經更新了數據庫,請嘗試使用'Update-Database -TargetMigration [PreviousMigrationName]'回滾以前的遷移版本,然後將其刪除。其他考慮的方法是從EF項目的'Migrations'文件夾中排除/刪除'[20161081751088_InitialCreate]'和'[20161091825212_ClientID]''。 –

回答

2
  1. 在你的項目中刪除文件夾遷移

  2. 從數據庫中刪除_MigrationHistory表。

  3. 從包管理器控制檯運行Enable-Migrations命令。運行Add-Migration Init命令創建遷移。
  4. 刪除Up()函數中的所有代碼行以進行初始遷移。 (要創建空遷移並解決您面臨的錯誤)。
  5. 運行Update-Database命令以應用您的空遷移。
  6. 更改您的代碼第一個模型以準備添加實際的遷移。
  7. 運行Add-Migration InitNew命令來創建新的遷移。使用Update-Database命令來應用更改。
+0

感謝您的回答,我不明白#8的意思,您能否澄清? – user3378165

+0

不客氣。我的意思是,在這一步爲您的代碼第一個模型創建一個新的遷移。 _InitNew_就是它的名字。你可以像_Add-Migration MyMigration_等那樣改變它。 – kkakkurt

+0

謝謝你解決了我的問題! – user3378165