Day21 第三周总结 + 用户模块收官复盘(可直接当学习笔记)

一、本周完整学习路线复盘

Day18 仓储模式 Repository Pattern

  • 掌握 IRepository<T> 泛型仓储接口
  • 封装 RepositoryBase<T> 通用 EF 实现
  • 理解 DbContext.Set<T>() 泛型获取表
  • 学会基础 CRUD、条件查询、分页、批量删除 / 更新 (EF Core 7+ ExecuteDelete/ExecuteUpdate
  • 规范分层:Domain 抽象仓储、Infrastructure 实现仓储

Day19 Service 业务层封装

  • 分层铁律:Controller 只收参、Service 写业务、Repository 只操作数据
  • 引入 IUnitOfWork 工作单元 统一管理 DbContext + 事务
  • 解决自增 ID 痛点:
    1. 开事务
    2. Add 实体
    3. SaveChanges() 拿自增 ID(不提交事务)
    4. 继续添加关联数据
    5. 最后统一 Commit,异常 Rollback
  • 完成用户模块:新增 / 修改 / 删除 / 分页 / 批量禁用 / 登录

Day20 AutoMapper 对象映射

  • 分清 Entity / DTO / VO 职责
    • Entity:只对应数据库,不对外暴露
    • DTO:前端入参(Create/Update/Query)
    • VO:后端返前端出参,隐藏敏感字段(密码)
  • 学会 Profile 统一配置映射规则
    • 同名字段自动映射
    • ForMember 字段不同名映射、Ignore 忽略字段
    • 单个对象、集合自动映射
  • .NET 新版 AutoMapper 无废弃包注册方式
  • 改造所有接口,杜绝手动赋值,全程 AutoMapper

Day21 本周收官

  • 整套用户模块 API 全部完工
  • 分层架构闭环:Controller → Service → UnitOfWork → Repository → DbContext
  • 准备 Git 版本提交 + EF Core & 仓储高频面试复习

二、已完成用户模块功能清单

  1. 根据 ID 查询用户 + 嵌套角色信息
  2. 多条件动态分页查询用户
  3. 新增用户 + 分配角色(事务保障)
  4. 修改用户 + 重置角色关联(事务)
  5. 删除用户 + 级联删除角色关联(事务)
  6. 批量禁用用户(EF 批量更新)
  7. 账号密码登录校验
  8. 全部接口完成 DTO→Entity→VO AutoMapper 映射
  9. 统一返回封装 R<T>、分页返回统一结构

三、项目架构最终定型(你现在的企业级结构)

复制代码
Domain
  Entities 实体
  Repositories 仓储接口
Infrastructure
  Repositories 仓储实现
  UnitOfWork 工作单元
  AppDbContext 上下文
Application
  Dtos 入参
  Vos 出参
  Services 业务服务
  AutoMapper 映射Profile
API
  Controllers 接口入口

核心规范:

  • Service 不直接注入 DbContext,只依赖 IUnitOfWork
  • 仓储只操作实体,不处理业务、不返回 R<T>
  • 禁止直接返回 Entity 给前端,一律用 VO
  • 所有业务、事务、参数校验统一放 Service

四、Git 提交规范(直接照着提交)

提交描述文案

复制代码
第三周完结:完成用户完整模块
1. 实现泛型仓储+工作单元事务
2. 封装UserService完整业务逻辑
3. 接入AutoMapper实现DTO/VO/Entity映射
4. 完成用户CRUD、分页、批量操作、登录接口
5. 规范分层架构,符合企业.NET后端标准

提交前检查

  1. 无冗余 NotImplementedException 未实现方法
  2. 所有异步方法 async/await 规范
  3. 事务逻辑正确、能拿自增 ID、可正常回滚
  4. AutoMapper 映射无报错,接口可 Postman 正常调通

五、EF Core + 仓储 高频面试必背(精简版)

  1. 为什么用仓储模式?

    解耦 EF Core 与业务层、复用通用 CRUD、面向接口易测试、统一数据访问规范,避免 Service 直接依赖 DbContext。

  2. Repository 和 Service 区别?

    Repository:单表数据访问,只操作实体;Service:业务逻辑、事务、多仓储协调、DTO 转换、参数校验。

  3. 工作单元 UOW 作用?

    共享同一个 DbContext、统一管理事务、多仓储操作保证原子性,统一 SaveChanges 与提交回滚。

  4. 新增实体拿自增 ID 为什么可以在事务内 SaveChanges?

    SaveChanges 只是执行 SQL 占用自增编号、写入事务临时区,未 Commit 前仍可回滚,不会真正落库。

  5. EF Core ExecuteDelete/ExecuteUpdate 优势?

    无需先查询加载实体,直接生成 SQL 批量删改,性能更高,无追踪开销。

  6. 为什么禁止直接返回 Entity 给前端?

    暴露数据库敏感字段(密码、隐私字段)、字段冗余、后期数据库变更会影响前端,用 VO 隔离更安全易维护。

  7. AutoMapper Profile 作用?

    集中管理所有映射规则,统一配置字段映射、忽略、别名映射,解耦业务与映射逻辑。

相关推荐
Slow菜鸟3 小时前
Docker 学习篇(五)| Docker 常用命令
学习·docker·容器
YJlio3 小时前
8.2Windows 11 如何用 Xbox Game Bar 实时监测电脑性能?CPU、内存、GPU、显存与 FPS 瓶颈判断教程
windows·笔记·学习·chatgpt·架构·电脑·xbox
say_fall3 小时前
装软件慢到崩溃?用户创建总出错?Linux 工具避坑指南
linux·运维·服务器·c++·学习
Komorebi_99993 小时前
大模型学习day6
学习·大模型
-To be number.wan3 小时前
操作系统 | 进程调度机制全解析
学习·操作系统
talen_hx2964 小时前
OkHttpClient的最佳实践优化方案
java·笔记·学习
Byron__4 小时前
AI学习_05_LangChain使用
学习·langchain
三品吉他手会点灯4 小时前
C语言学习笔记 - 26.C编程预备计算机专业知识 - 15~25关键内容回顾
c语言·笔记·学习
知识分享小能手4 小时前
R语言入门学习教程,从入门到精通,R语言多维数据可视化(12)
学习·信息可视化·r语言