数据库中已经有一个名为AspNetRoles的对象.(实体框架芯)

mej*_*ggs 3 asp.net-identity entity-framework-core asp.net-core-mvc asp.net-core

我有一个使用实体框架核心的asp.net核心mvc网站.

我不知道它最初是如何发生的,但我无法理解错误:"数据库中已经有一个名为AspNetRoles的对象"

我最终删除了数据库,删除了所有我的迁移.cs文件并从头开始.

我接着试过了 add-migration MyInitialMigration

同样的错误

然后我再次删除了数据库,并尝试了直接 update-database (没有添加迁移)

仍然是同样的错误

我尝试将appsettings配置字符串更改为指向新的不存在的数据库.

还是一样的错误!

以前在MVC5/EF6上我遇到过这个错误并使用与此答案相同的方法解决了它: 数据库中已经有一个对象命名

-Add-Migration Initial -IgnoreChanges

但是,在EFCore中不支持-IgnoreChanges

或者之前在EF6上我通过添加迁移解决了这个问题,然后删除了Up/Down中的所有内容并运行了空迁移.这对EFCore没有用

我怎么能继续?我已经检查了迁移表,它们总是空的,即使它每次都创建了整个数据库.只是似乎没有在迁移表中记录它

mej*_*ggs 7

找到了我的问题.

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

在EntityFrameworkConfigurationProvider中有一个public override void Load()有a dbContext.Database.EnsureCreated();和aCreateAndSaveDefaultValues

在这两者之间看起来它正在初始化数据库而不跟踪迁移.

我评论了这些,进行了迁移,它运行良好.希望每次我想运行迁移时都不必对它们进行评论:/