将现有 Microsoft.AspNet.Identity 数据库 (EF 6) 迁移到 Microsoft.AspNetCore.Identity (EF Core)
Migrate existing Microsoft.AspNet.Identity DB (EF 6) to Microsoft.AspNetCore.Identity (EF Core)
我正在开发一个使用 Microsoft.AspNet.Identity 的应用程序 (APS.net MVC)。现在我想将我的应用程序改造成 APS.net 核心,它使用 Microsoft.AspNetCore.Identity。但是这两者在每个模型中都有一些差异。是否有任何直接方法可以为 Microsoft.AspNetCore.Identity 相关更改生成初始迁移,以便将现有数据库与 Asp.net 核心身份连接?
这里有关于 asp.net 核心 3.0 以及如何将您的数据库迁移到 asp.net 核心身份 3.0 数据库的详尽 explanation。
通读一遍,希望对遇到的人有所帮助。
我能够使用以下步骤迁移现有数据库。
创建一个新的 ASP.net 核心项目并修改它的 ModelSnapshot
以与 EF6 匹配。之后就可以生成EF6转EF Core的脚本了。
编写一个脚本来更新 AspNetUsers table。在 ASP.net 核心身份验证时使用 NormalizedEmail
、NormalizedUserName
列。所以我们需要使用现有数据更新这两列。
希望这对外面的人有帮助...
请关注 this GitHub 话题以获取更多信息。
我将 'full' 身份数据库转换为核心身份。我的情况可能不适合你。我不 使用 EF 迁移。我只使用用户和角色功能。我使用了这些步骤:
- 复制数据库
删除与身份相关的 table 和 MigrationHistory...
- 如果存在 AspNetRoleClaims,则删除 table
- 如果存在 AspNetUserTokens
,则删除 table
- 如果存在 AspNetUserClaims,则删除 table
- 删除 table 如果存在 AspNetUserRoles
- 删除 table 如果存在 AspNetUserLogins
- 如果存在 AspNetUserClaims,则删除 table
- 如果存在 AspNetRoles,则删除 table
- 删除 table 如果存在 AspNetUsers
- 丢弃 table 如果存在 __EFMigrationsHistory
允许 Identity Core 迁移到 运行,创建 Core Identity 更喜欢的新 tables
从旧数据库复制身份数据
--复制用户数据
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
--复制过来user/roles
insert into AspNetUserRoles select * from [OldDatabase].dbo.AspNetUserRoles
我不使用任何其他 table。我把它们留空了。
我正在开发一个使用 Microsoft.AspNet.Identity 的应用程序 (APS.net MVC)。现在我想将我的应用程序改造成 APS.net 核心,它使用 Microsoft.AspNetCore.Identity。但是这两者在每个模型中都有一些差异。是否有任何直接方法可以为 Microsoft.AspNetCore.Identity 相关更改生成初始迁移,以便将现有数据库与 Asp.net 核心身份连接?
这里有关于 asp.net 核心 3.0 以及如何将您的数据库迁移到 asp.net 核心身份 3.0 数据库的详尽 explanation。
通读一遍,希望对遇到的人有所帮助。
我能够使用以下步骤迁移现有数据库。
创建一个新的 ASP.net 核心项目并修改它的
ModelSnapshot
以与 EF6 匹配。之后就可以生成EF6转EF Core的脚本了。编写一个脚本来更新 AspNetUsers table。在 ASP.net 核心身份验证时使用
NormalizedEmail
、NormalizedUserName
列。所以我们需要使用现有数据更新这两列。
希望这对外面的人有帮助...
请关注 this GitHub 话题以获取更多信息。
我将 'full' 身份数据库转换为核心身份。我的情况可能不适合你。我不 使用 EF 迁移。我只使用用户和角色功能。我使用了这些步骤:
- 复制数据库
删除与身份相关的 table 和 MigrationHistory...
- 如果存在 AspNetRoleClaims,则删除 table
- 如果存在 AspNetUserTokens ,则删除 table
- 如果存在 AspNetUserClaims,则删除 table
- 删除 table 如果存在 AspNetUserRoles
- 删除 table 如果存在 AspNetUserLogins
- 如果存在 AspNetUserClaims,则删除 table
- 如果存在 AspNetRoles,则删除 table
- 删除 table 如果存在 AspNetUsers
- 丢弃 table 如果存在 __EFMigrationsHistory
允许 Identity Core 迁移到 运行,创建 Core Identity 更喜欢的新 tables
从旧数据库复制身份数据
--复制用户数据
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
--复制过来user/roles
insert into AspNetUserRoles select * from [OldDatabase].dbo.AspNetUserRoles
我不使用任何其他 table。我把它们留空了。