我正在使用一个使用Microsoft.AspNet.Identity的应用程序(APS.net MVC)。现在我想将我的应用程序改造为使用Microsoft.AspNetCore.Identity的APS.net Core。但是这两者在每个模型中都有一些差异。是否有任何直接的方法来生成Microsoft.AspNetCore.Identity相关更改的初始迁移,以便将现有数据库与Asp.net Core身份连接起来?
这里有一个关于asp.net core 3.0以及如何将你的数据库迁移到asp.net核心身份3.0分贝的全面的explanation。
阅读它,我希望它会帮助任何遇到它的人。
我能够使用以下步骤迁移现有数据库。
ModelSnapshot
以匹配EF6。之后,您可以为EF6到EF Core的更改生成脚本。NormalizedEmail
,NormalizedUserName
列。所以我们需要使用现有数据更新这两列。希望这有助于那里的人......
请关注this GitHub线程以获取更多信息。
我将“完整”身份数据库转换为核心身份。我的情况可能不适合你。我没有使用EF迁移。我只使用用户和角色功能。我使用了以下步骤:
允许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
我不使用任何其他表。我把它们留空了。