将现有的 Microsoft.AspNet.Identity DB (EF 6) 迁移到 Microsoft.AspNe



我正在开发一个使用Microsoft.AspNet.Identity的应用程序(APS.net MVC(。现在我想将我的应用程序改造为使用Microsoft.AspNetCore.Identity的 APS.net Core。但是这两者在每个模型中都存在一些差异。是否有任何直接的方法可以为Microsoft.AspNetCore.Identity相关更改生成初始迁移,以便将现有数据库与 Asp.net 核心身份连接起来?

我能够使用以下步骤迁移现有数据库。

  1. 创建一个新的 ASP.net Core 项目并修改其ModelSnapshot以匹配 EF6。之后,可以生成用于将 EF6 更改为 EF Core 的脚本。

  2. 编写脚本以更新 AspNetUsers 表。在 ASP.net 核心标识中,在进行身份验证时,它NormalizedEmailNormalizedUserName列中使用。因此,我们需要使用现有数据更新这两列。

希望这对那里的人有所帮助...

请关注此 GitHub 线程以获取更多信息。

这里有关于 asp.net 核心 3.0 以及如何将数据库迁移到 asp.net 核心身份 3.0 db 的详尽解释。

通读它,我希望它能帮助任何遇到它的人。

我将"完整"身份数据库转换为核心身份。 我的情况可能不适合你。 我没有使用 EF迁移。 我只使用用户和角色功能。我使用了以下步骤:

  • 复制数据库
  • 删除与标识相关的表和迁移历史记录...

    • 删除表 如果存在 AspNetRoleClaims
    • 删除表 如果存在 AspNetUserTokens
    • 删除表 如果存在 AspNetUserClaims
    • 删除表 如果存在 AspNetUserRoles
    • 删除表 如果存在 AspNetUserLogins
    • 删除表 如果存在 AspNetUserClaims
    • 删除表 如果存在 AspNetRoles
    • 删除表 如果存在 AspNetUsers
    • 删除表(如果存在__EFMigrationsHistory

允许运行身份核心迁移,创建核心身份首选的新表

从旧数据库复制身份数据

--复制用户数据

insert into AspNetUsers(Id, UserName, NormalizedUserName, Email, NormalizedEmail,
EmailConfirmed, PasswordHash, PhoneNumberConfirmed, TwoFactorEnabled, LockoutEnabled, AccessFailedCount
)
select Id, UserName, UPPER(UserName), Email, UPPER(Email), 
1, PasswordHash, 0, 0, 0, 0 from [OldDatabase].dbo.AspNetUsers

--复制角色

insert into AspNetRoles(Id, [Name], NormalizedName)
select Id, [Name], UPPER([Name]) from [OldDatabase].dbo.AspNetRoles

--复制用户/角色

insert into AspNetUserRoles select * from [OldDatabase].dbo.AspNetUserRoles

我不使用任何其他表。 我把它们留空了。

相关内容

  • 没有找到相关文章

最新更新