數據庫中已經有一個名為AspNetRoles的對象。 (實體框架芯)

asp.net-core asp.net-core-mvc asp.net-identity entity-framework-core

我有一個使用實體框架核心的asp.net核心mvc網站。

我不知道它最初是如何發生的,但是我無法理解錯誤:“數據庫中已經有一個名為AspNetRoles的對象”

我最終刪除了數據庫,刪除了所有我的遷移.cs文件並從頭開始。

然後我嘗試了add-migration MyInitialMigration

同樣的錯誤

然後我再次刪除了數據庫,並嘗試了直接update-database (不添加遷移)

仍然是同樣的錯誤

我嘗試將appsettings配置字符串更改為指向新的不存在的數據庫。

還是一樣的錯誤!

以前在MVC5 / EF6上我遇到過這個錯誤並使用與此答案相同的方法解決了它: 數據庫中已經有一個對象命名

-Add-Migration Initial -IgnoreChanges

但是,在EFCore中不支持-IgnoreChanges

或者之前在EF6上我通過添加遷移解決了它,然後刪除了Up / Down中的所有內容並運行了空遷移。這對EFCore沒有用

我怎麼能繼續?我已經檢查了遷移表,即使它每次都創建了整個數據庫,它們也總是空的。只是似乎沒有在遷移表中記錄它

一般承認的答案

找到了我的問題。

我已經按照本教程從EntityFramework加載appsettings: https ://docs.asp.net/en/latest/fundamentals/configuration.html#example-entity-framework-settings

在EntityFrameworkConfigurationProvider中有一個public override void Load() ,它有一個dbContext.Database.EnsureCreated();CreateAndSaveDefaultValues

在這兩者之間看起來它正在初始化數據庫而不跟踪遷移。

我評論了這些,進行了遷移,它運行良好。希望每次我想運行遷移時都不必對它們進行評論:/


熱門答案

我剛剛遇到了同樣的問題,看起來像Database.EnsureCreated()不使用遷移,你可以使用Database.Migrate()而不是我剛嘗試過的東西,似乎工作正常,但時間會告訴我什麼時候我嘗試另一次遷移。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因