1

我有一個使用實體框架核心的asp.net核心mvc網站。數據庫中已經有一個名爲AspNetRoles的對象。 (entity-framework-core)

我不知道它是如何發生的最初,但我不能讓過去的錯誤: 「有已在數據庫中名爲AspNetRoles對象」

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

我又試圖 add-migration MyInitialMigration

同樣的錯誤

我還是那句話刪除了數據庫,並試圖直接 update-database (不添加遷移)

還是同樣的錯誤

我試着改變appsettings config字符串來指向一個新的不存在的數據庫。

還是一樣的錯誤!

此前在MVC5/EF6我遇到這個錯誤,並使用同樣的方法,這個答案已經解決它: There is already an object named in the database

-Add-Migration Initial -IgnoreChanges

然而-IgnoreChanges不支持在EFCore

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

我該如何繼續?我已經檢查過遷移表,即使它每次都創建了整個數據庫,它們仍然是空的。只是似乎沒有記錄在遷移表

回答

4

發現我的問題。

我曾跟隨本教程從的EntityFramework加載的AppSettings: https://docs.asp.net/en/latest/fundamentals/configuration.html#example-entity-framework-settings

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

這兩者的之間,它看起來就像是初始化數據庫沒有跟蹤遷移。

我評論這些,跑了一個遷移,它工作正常。希望我沒有評論他們每次我想運行遷移:/

0

我剛纔有同樣的問題,並且好像Database.EnsureCreated()不使用遷移,您可以使用Database.Migrate()取而代之,這是我剛剛嘗試過的,似乎可以工作,但時間會告訴我何時嘗試其他遷移。

相關問題