从数据库中删除 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 core 的其他表中添加数据和删除相同的数据?