You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 6:Identity用户与跨库应用实体关联及架构疑问

多数据库用户关联问题的解决方案

不合并数据库的优化思路

  • 用软删除替代物理删除:在认证库的用户表里加个IsDeleted字段,删除用户时仅标记状态,不实际删除数据。这样业务库存储的UserId就不会变成无效引用,查询业务数据时过滤掉已删除用户即可。
  • 事件驱动同步清理:借助事件总线(比如MediatR),当认证API执行用户删除操作时,触发事件通知应用服务API,同步清理业务库中关联的用户数据,或给这些数据打上无效标记。注意分布式事务的兼容性,比如SQL Server需配置MSDTC,实现复杂度稍高。
  • 冗余用户关键信息+定期同步:业务库除了存储UserId,还可冗余存储用户名、用户UUID这类稳定标识,然后定期调用认证API拉取用户状态,清理业务库中的无效UserId引用。适合对数据一致性要求不极端严格的场景。

合并数据库的利弊

  • 优势:可直接建立数据库级外键关联,数据一致性更容易保障,无需跨库调用,开发和维护成本更低。
  • 劣势:业务数据量增大后会拖慢认证库性能,且业务与认证服务耦合度提升,后续单独扩展任一模块会更麻烦。

折中方案:共享用户核心数据

在业务库单独创建一张用户核心信息表,仅存储认证库用户的UserId、IsActive这类必要状态字段,通过定时任务或实时事件同步认证库的用户状态变化。既保留两个数据库的独立性,又能在业务库做基本的有效性校验,避免无效引用。

内容的提问来源于stack exchange,提问作者Caio Marcus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:10:57