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

如何从数据库中删除 ASP.NET 标识表?现在我在我的数据库中添加了以下表格:

  • __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 派生我的数据库,它会自动负责创建相关表以及我明确指定的表。
  • 我喜欢你的自信,但我也有一个建议给你。不要“过度自信”。 “过度自信”是致命的。

标签: c# asp.net entity-framework asp.net-identity-2


【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2012-01-04
      相关资源
      最近更新 更多