2016-03-28 15 views
1

Error如何爲身份添加缺少的遷移? (無效的對象名稱dbo.AspNetRoles')

我已經創建了一個asp.net應用程序和我的開發機器上它創造了這些內置的表是必要使用asp.net mvc的身份的一部分。

但是,在初始創建之後,我必須創建一個SwitchToIdentityDbContext遷移,它具有創建這些表的所有邏輯。但在我的應用程序中,這些表已經存在,所以我刪除了這個邏輯。之後(我認爲)當我嘗試將我的應用程序部署到沒有這些表的新數據源時,導致身份缺失表。

有沒有一種方法來產生缺失的遷移,以使其運行?

截至目前,我有這個在我的配置:

AutomaticMigrationsEnabled = true; 
AutomaticMigrationDataLossAllowed = true; 

即使我刪除遷移和添加一個新的,它是空的。

+0

也許你會錯過一個DatabaseInitilalizer for你的DbContext。例如MigrateDatabaseToLatestVersion – Helikaon

+1

一個選項是手動刪除Visual Studio中的所有遷移'.cs'文件以及您的遷移數據庫表中的所有記錄。然後,您可以在Visual Studio中創建新的遷移,以重新創建所有內容。但是,您可能不得不徹底刪除現有數據庫,而不僅僅是遷移表。 –

+0

我會建議Drew的選擇,或者你生成一個完整的重建腳本。如果需要,您可以註釋掉存在的對象:update-database -Script -SourceMigration $ InitialDatabase –

回答

1

如果您不關心駐留在數據庫中的數據,則更正架構的一個選項是刪除Visual Studio中的所有.cs遷移以及數據庫中dbo.__MigrationHistory表中的所有記錄。之後,您可以嘗試在Visual Studio中創建全新遷移以修復數據庫。

但是,如果這不起作用,您可以清除Visual Studio中的所有遷移並徹底清除數據庫。然後運行

add-migration CreateMyDb,然後update-database

,你應該是好去。

如果您爲您的數據做關心,你可以隨時摧毀遷移之前導出數據庫表的內容Server Management Studio爲.csv文件(如果您使用它)。

相關問題