首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.Net核心标识EF5.0只将用户还原到数据库

ASP.Net核心标识EF5.0只将用户还原到数据库
EN

Stack Overflow用户
提问于 2021-08-06 19:55:06
回答 1查看 178关注 0票数 1

我在我的Blazor中使用Microsoft.AspNetCore.Identity.EntityFramework,并且没有问题地对它进行了定制。我确实喜欢标识的简单性和健壮性;但是,由于我是为部署而开发的,所以遇到了一个小问题。在灾难恢复中,来自MSSQL备份的完全恢复工作正常。如果您没有为已部署的Blazor项目在ApplicationDbContext中更改任何内容,则这种类型的备份至关重要。因此,在灾难恢复到相同状态和DbContext时,没有问题,但是如果您在DbContext中从一个安装更改到另一个安装,或者说您正在通过上下文中的更改升级以前版本的,您就无法恢复用户,因为您只能使用以前的DbContext作为DbContext和DbContext进行完整的完全恢复。

如何恢复,或者更好地将日期从DBContext的一个实例迁移到另一个实例?我尝试从备份设备进行数据恢复,但由于用户表与用户声明表和用户角色表之间的外键,它不允许我进行恢复。外键约束不允许我用先前生成的GUID恢复用户,GUID包含指向其他数据的重要信息链接。例如,一个表跟踪用户创建的事件,如果我重新创建用户,它的GUID与在备份中注册的GUID不同。

任何帮助都将不胜感激。

如果查询表中的ASPNetUsers,将得到以下结果:

代码语言:javascript
运行
复制
    Id                                                                                                                                                                                                                                                               UserName                                                                                                                                                                                                                                                         NormalizedUserName                                                                                                                                                                                                                                               Email                                                                                                                                                                                                                                                            NormalizedEmail                                                                                                                                                                                                                                                  EmailConfirmed PasswordHash                                                                                                                                                                                                                                                     SecurityStamp                                                                                                                                                                                                                                                    ConcurrencyStamp                                                                                                                                                                                                                                                 PhoneNumber                                                                                                                                                                                                                                                      PhoneNumberConfirmed TwoFactorEnabled LockoutEnd                         LockoutEnabled AccessFailedCount
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------- ---------------- ---------------------------------- -------------- -----------------
6cd26b55-b0c6-41ae-ac6c-ff9ae3242c3b                                                                                                                                                                                                                             userone@mymail.com                                                                                                                                                                                                                                               USERONE@MYMAIL.COM                                                                                                                                                                                                                                               userone@mymail.com                                                                                                                                                                                                                                               USERONE@MYMAIL.COM                                                                                                                                                                                                                                               1              AQAAAAEAACcQAAAAECp/NfxxEWw8fbd0jIrXOGZ/v/ggPscxMIINueP2dUQAihgRwrE1a+t1os/7MwvPCg==                                                                                                                                                                             OJP4HUHN6FNCXHXETVJTDQLC6RBUCLJS                                                                                                                                                                                                                                 f69a0ff7-9298-4d1f-8faa-e8ab3db3ab70                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             0                    0                NULL                               1              0
9eda9ba1-dd47-4308-ba62-a19381a32d56                                                                                                                                                                                                                             usertwo@mymail.com                                                                                                                                                                                                                                               USERTWO@MYMAIL.COM                                                                                                                                                                                                                                               usertwo@mymail.com                                                                                                                                                                                                                                               USERTWO@MYMAIL.COM                                                                                                                                                                                                                                               1              AQAAAAEAACcQAAAAEFcXpQREt8sfhssYHlH/hRSlk3yX/bGMCYpXpTrid+YLNMFkDr5V45MnIo0JOPmWlw==                                                                                                                                                                             YLZJSYILLPQZBFGCOJLXKFZB64YXCHIK                                                                                                                                                                                                                                 c389b663-fcd1-4918-b9ed-54bc583666cc                                                                                                                                                                                                                             NULL                                                                                                                                                                                                                                                             0                    0                NULL                               1              0

(2 rows affected)


Completion time: 2021-08-06T14:19:46.8143727-07:00

由于Id是由EF核心标识表生成的GUID,并且链接到其他ASPNetCore表(如UserRoles、UserClaims等),那么如何使用以前生成的旧GUID导入用户数据?

编辑8月12日2021年

我找到了一个暂时解决这个问题的办法.为了解释,我将使用APP、OriginalDB、BackedUpDevice ( bak文件)以及RestoredDB和NewDB。

我的OriginalDB继续在模型和ASP.Net核心/Blazor应用程序(APP)上工作,因此在调整模型时会发生变化。我有我的应用程序,当它第一次初始化时,它使用模型在服务器上创建数据库,如果它不存在的话。我使用迁移来创建新模型,以便在第一次运行时放到服务器上。ASP.Net核心身份有助于这一点。

因此,只有在应用程序中修改模型,并且应用程序需要重新应用迁移时,才会出现最初的问题。我不使用后续迁移,因为一旦使用了OriginalDB,就会有数据,即使模型发生了更改,也需要复制数据。我对此绝对没有异议。我可以将BackedUpDevice还原到另一个数据库,作为RestoredDB。然后,我使用RestoredDB将数据插入到NewDB中,这是新创建的OriginalDB模式的副本,以及应用程序中的模型更改。因此,这给出了我的数据,但我不能将此方法用于ASP.Net核心标识表,因为它使用了外键。

我发现的解决办法是,我可以安全地删除ASP.Net核心标识表,即AspNetRoles、AspNetUserClaims、AspNetUserLogins、AspNetUserRoles、AspNetUsers,并从RestoredDB复制模式和表到NewDB。在使用此方法重新创建表时,我遇到的问题是,我还修改了这些用户表,不仅更改了表名,而且还添加了自定义字段(主要如本条款中所示),在应用程序的未来迭代中,可能会有其他自定义字段和/或影响这些表的更改。因此,我需要了解如何才能将RestoreDB用户表数据,包括为具有Foreign的用户生成的GUID复制到NewDB用户表。任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-09-10 17:27:00

我显然不了解你的情况,我完全不理解你的解释的某些部分,但,你所描述的方法走错了很远。

EFCore5.0迁移允许在如何创建、维护和应用它们方面具有很大的灵活性。您应该利用这些特性来完成您想要做的事情,而不是创建新的数据库并将数据复制到它们中。

有些示例似乎适用于您的用例:

  • 使用单独的迁移项目中,您可能需要考虑有两组不同的迁移--一组用于本地开发/迭代,另一组只包含将发布的应用程序从一个版本迁移到下一个版本的迁移。
  • 自定义迁移代码中,解决自动迁移的问题可能涉及自定义自动生成的迁移代码。或创建空迁移并编写完全自定义代码来执行中间数据迁移步骤。
  • 不包括你的模型的一部分中,您可能需要将一个DbContext中的某些对象排除在另一个DbContext的迁移中(例如,如果您的标识表来自与其他应用程序表不同的DbContext,但是您引用了主应用程序的DbContext中的标识实体)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68686883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档