asp.net-core - 数据库中已经有一个名为 AspNetRoles 的对象。 ( Entity Framework 核心)

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

我有一个使用 Entity Framework 核心的 asp.net 核心 mvc 网站。

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

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

然后我试过了add-migration MyInitialMigration
同样的错误

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

还是同样的错误

我尝试更改 appsettings 配置字符串以指向一个新的、不存在的数据库。

还是一样的错误!

以前在 MVC5/EF6 上我遇到过这个错误,并使用与这个答案相同的方法解决了它:
There is already an object named in the database
-Add-Migration Initial -IgnoreChanges
但是 -IgnoreChanges 在 EFCore 中不受支持

或者之前在 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
在这两者之间,它看起来像是在没有跟踪迁移的情况下初始化数据库。

我将这些注释掉,进行了迁移,并且运行良好。希望每次我想运行迁移时都不必将它们注释掉:/

关于asp.net-core - 数据库中已经有一个名为 AspNetRoles 的对象。 ( Entity Framework 核心),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39609551/

相关文章:

c# - 声明类型为 "emails",然后 ClaimTypes.Email 为 null

asp.net-core-mvc - AspNetCore 2.0 MVC/ 'model' 必须出现在起始行

asp.net - 如何将 Active Directory 用于 ASP.Net 5 (MVC6) Intranet 应用程序

docker - .Net Core WebApi 拒绝 Docker 容器中的连接

ASP.NET Core 检测 Mac OS 用户

c# - Net Core : Difference between . Startup.Cs 中的 SetBasePath 和 .UseContentRoot

asp.net-identity - 角色不起作用 - 错误地显示为用户不在角色中,.NET 6(从 .Net Core 3.2 升级)

c# - ASP.NET Identity 记录用户注册和上次登录时间

asp.net-core - 如何在 ASP.NET Core 上显示未授权页面

asp.net-mvc - Asp Net vNext 上的 Kestrel 不提供/下的索引页