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

时间:2018-05-15 06:21:27

标签: c# asp.net-mvc asp.net-core asp.net-identity asp.net-core-identity

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

3 个答案:

答案 0 :(得分:1)

关于asp.net core 3.0以及如何将数据库迁移到asp.net核心身份3.0 db,这里有一个彻底的explanation

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

答案 1 :(得分:1)

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

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

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

希望这可以帮助某个人...

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

答案 2 :(得分:1)

我将“完整”身份数据库转换为核心身份。我的情况可能不适合您。我不是使用EF迁移。我仅使用“用户和角色”功能。我使用了以下步骤:

  • 复制数据库
  • 拖放与身份相关的表和MigrationHistory ...

    • 删除表(如果存在)AspNetRoleClaims
    • 删除表IF EXISTS AspNetUserTokens
    • 如果存在AspNetUserClaims,则删除表
    • 删除表(如果存在)AspNetUserRoles
    • 删除表(如果存在)AspNetUserLogins
    • 如果存在AspNetUserClaims,则删除表
    • 如果存在AspNetRoles,则删除表
    • 如果存在AspNetUsers,则删除表
    • 删除表IF EXISTS __EFMigrationsHistory

允许Identity Core迁移运行,创建Core Identity首选的新表

从旧数据库复制身份数据

-复制用户数据

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

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