agilelabs-fx-docs main tasks/use-data-access.md

做数据访问

本页面面向需要落地数据访问的人。当前默认路径已经收敛为 Dapper / SQL,EF Core 只作为存量项目兼容方案保留。

我现在要解决什么

  • 新项目应该怎样按 Dapper 路线组织 Repository。
  • 存量 EF Core 项目什么时候该迁、怎么迁到 Dapper。
  • 审计字段、并发控制和事务为什么仍依赖 WorkContext
  • 数据库命名和仓储命名如何统一。

先看哪几页

  1. 框架规范 / 命名与数据转换规范
  2. 数据访问
  3. 数据库命名

最短落地路径

先选访问模型,再选仓储基类

  1. 新项目默认先选 SqlBaseRepository
  2. 如果需求是复杂列表、分页、多表 SQL、事务或并发控制,继续沿 Dapper 路线细化业务仓储。
  3. 如果当前模块已经落在 EF Core 上,先判断是否能直接迁到 Dapper,而不是继续新增 DbContextCrudRepository 或 EF Core migration。

落地顺序

  1. 先确定新模块不再新增 EF Core 接入。
  2. 再按业务边界定义 Dapper Repository。
  3. 最后把审计字段、事务和并发控制显式落在 Repository 或其相邻应用层里。

保存链路排查点

  • 写入 SQL 是否明确包含并发字段、租户条件和影响行数校验。
  • 审计字段是否显式从当前 WorkContext 补齐。
  • 涉及多步写入时是否明确使用事务,而不是依赖隐式提交。
  • 后台任务里的保存逻辑是否先创建了新的 WorkContext Scope。

如果当前项目已经用了 EF Core

  • 不要继续把新业务挂到 DbContextCrudRepository 上。
  • 优先把查询、分页和报表迁到 Dapper。
  • 写入迁移时同步收敛并发控制、审计字段和事务边界。
  • 迁移规范统一看 EF Core 迁移到 Dapper

真实项目怎么做

  • niusys-webapi:适合看旧的 DbContext 兼容路径,不适合作为新项目默认模板。
  • gmandarin-backend:大量显式业务仓储。
  • woscm:重点看项目级 Dapper 基类与 ts 并发控制。

相关主题