从数据库中删除 ASP.NET 标识表

Posted

技术标签:

【中文标题】从数据库中删除 ASP.NET 标识表【英文标题】:Removing ASP.NET Identity tables from a database 【发布时间】:2015-01-24 23:50:07 【问题描述】:

如何?现在我在我的数据库中添加了以下表格:

__MigrationHistory AspNetRoles AspNetUserClaims AspNetUserLogins AspNetUserRoles AspNet 用户

我知道我可以写如下内容:

DROP TABLE __MigrationHistory
DROP TABLE AspNetUserLogins
DROP TABLE AspNetUserRoles
DROP TABLE AspNetUserClaims
DROP TABLE AspNetRoles
DROP TABLE AspNetUsers

但是我想知道这是否是正确的方法,以及是否有更优雅的方法来删除 ASP.NET 标识表和我可能遗漏的任何其他潜在痕迹。

【问题讨论】:

简单地删除表有什么问题? 显然没有错,但我在问这是否是唯一可能的方法。 任何方法最终都会运行这些相同的 drop 命令。你是如何创建表格的?通过直接对服务器运行命令?那么反过来是合适的。我不熟悉设置身份,但你有没有调用某种CreateTablesOnDatabase() 函数?如果是这样,我想有一个等效的 DropTablesonDatabase() 或者你可以看到 create 函数是如何创建反向的。 我使用 EF6 Code First 方法,并从 IdentityDbContext 派生我的数据库,它会自动负责创建相关表以及我明确指定的表。 我喜欢你的自信,但我也有一个建议给你。不要“过度自信”。 “过度自信”是致命的。 【参考方案1】:

请注意:__MigrationHistory 不是身份框架的一部分 - 它是存储有关 EF 迁移的数据库状态信息的表。如果您想保留迁移状态并继续使用迁移,请不要对此表执行任何操作(除非您知道自己在做什么)

我会指出(似乎您已经有了答案)如果您通过迁移创建了这些表,您可以通过

回滚到“状态零”
update-database -target:0

这将使您的所有迁移重新开始,您将只剩下一张表__MigrationHistory

【讨论】:

【参考方案2】:

您必须从数据库中删除以下表格。

DROP TABLE __EFMigrationsHistory
Drop Table AspNetRoleClaims
DROP TABLE AspNetUserLogins
DROP TABLE AspNetUserRoles
DROP TABLE AspNetUserClaims
Drop Table AspNetUserTokens
DROP TABLE AspNetRoles
DROP TABLE AspNetUsers

如果您的数据库中已经存在孤立的身份架构,您还需要删除它。

【讨论】:

以上是关于从数据库中删除 ASP.NET 标识表的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET :- 使用单一视图从两个表中删除记录

如何删除 ASP.NET 标识中重复的 UserId 列

如何在 asp.net core 的其他表中添加数据和删除相同的数据?

在asp.net mvc中删除数据成功后重新排序自动编号列JQuery Datatable

从字符串转换为唯一标识符时 ASP.NET 转换失败

asp.net - 管理数据库表的 Web 前端 - 添加、删除、更新