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

问题描述 投票:3回答:3

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

c# asp.net-mvc asp.net-core asp.net-identity asp.net-core-identity
3个回答
1
投票

这里有一个关于asp.net core 3.0以及如何将你的数据库迁移到asp.net核心身份3.0分贝的全面的explanation

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


1
投票

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

  1. 创建一个新的ASP.net Core项目并修改它的ModelSnapshot以匹配EF6。之后,您可以为EF6到EF Core的更改生成脚本。
  2. 编写脚本来更新AspNetUsers表。在ASP.net核心身份验证时使用的是NormalizedEmailNormalizedUserName列。所以我们需要使用现有数据更新这两列。

希望这有助于那里的人......

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


1
投票

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

  • 复制数据库
  • 删除与身份相关的表和MigrationHistory ... drop table IF EXISTS AspNetRoleClaims drop table IF EXISTS AspNetUserTokens drop table IF EXISTS AspNetUserClaims drop table IF EXISTS AspNetUserRoles drop table IF EXISTS AspNetUserLogins drop table IF EXISTS AspNetUserClaims drop table IF EXISTS AspNetRoles drop table IF EXISTS AspNetUsers drop table 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

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

© www.soinside.com 2019 - 2024. All rights reserved.