Day20:AutoMapper 对象映射

一、今日学习目标

  1. 分清 Entity / DTO / VO 到底是什么
  2. 安装 + 配置 AutoMapper
  3. Profile 配置映射规则 Profile 完整用法
  4. 所有接口 改成:不直接返回实体,统一返回 VO/DTO
  5. 学会字段名不同、嵌套对象、列表的映射

二、核心概念(极简版)

1. 三个对象到底干嘛的?

表格

对象 全称 作用 位置
Entity 实体 对应数据库表 Domain
DTO 数据传输对象 接收前端参数 Application
VO 视图对象 返回给前端的数据 Application

一句话:前端 → DTO → Service → Entity → Service → VO → 前端

2. AutoMapper 干什么?

自动把:

  • User → UserVO
  • UserCreateDto → User
  • List<User> → List<UserVO>

不用再写:

cs 复制代码
var vo = new UserVO();
vo.Id = user.Id;
vo.Name = user.Name;

三、高频面试题 + 答案

1. 为什么要用 AutoMapper?

答案

  • 减少重复赋值代码
  • 让业务代码更干净
  • 支持复杂类型、嵌套映射
  • 企业标准,提升开发效率

2. DTO 和 VO 有什么区别?

答案

  • DTO:前端传给后端(入参)
  • VO:后端返回给前端(出参)
  • Entity:数据库实体,绝不直接返回给前端

3. AutoMapper 映射规则是什么?

答案 :默认按字段名相同映射,不区分大小写:

字段名不同可以用 ForMember 配置。

4. 什么是 Profile?

答案 :统一存放所有映射规则的配置类,方便维护。

5. 可以映射子对象吗?

答案:可以,自动映射嵌套类,也可以手动配置。


四、今日实战练习:所有接口使用 AutoMapper(必须完成)

练习目标

把你Day19 的所有用户接口全部升级:

  1. Controller 不接收 Entity,只接收 DTO
  2. Service 不返回 Entity,只返回 VO
  3. 全部使用 AutoMapper 映射
  4. 禁止任何手动 .Id=xx .Name=xx 赋值

你必须创建这些类

1. DTO(前端 → 后端)

  • UserCreateDto
  • UserUpdateDto
  • UserPageQueryDto
  • LoginDto

2. VO(后端 → 前端)

  • UserVO
  • UserDetailVO(带角色)
  • RoleVO
  • PageVO 分页统一返回

3. 映射配置

  • AutoMapperProfile:配置所有映射

4. 改造全部接口

  • 新增:接收 UserCreateDto → 映射成 User
  • 查询:返回 UserVO / UserDetailVO
  • 分页:返回 PageVO<List<UserVO>>

规范要求

  • Entity 绝不暴露到前端
  • 所有入参出参都用 DTO/VO
  • 映射全部交给 AutoMapper
  • Controller、Service 无手动赋值
相关推荐
宝桥南山4 天前
Microsoft Agent Framework(.NET) - 尝试一下从MCP Server上获取Agent Skills
ai·微软·c#·aigc·.net·.netcore
海盗123413 天前
微软技术周报 ——2026-08-03
后端·python·microsoft·c#·.netcore
啊这啊这 六弦之首19 天前
.NET Core跨平台的奥秘[中篇]:复用之殇
.netcore
心念枕惊20 天前
.NET CORE 授权进阶-角色、策略与动态权限实现
java·前端·.netcore
完美火龙篇 四月的友21 天前
通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?
.net·.netcore
时代的狂1 个月前
如何理解 C# 的 async 和 await
c#·.netcore·async·await
尼米棕熊1 个月前
.NET CORE认证模块-注册方案与请求认证探究
.netcore
鸠摩智首席音效师2 个月前
如何在 macOS 上安装 .NET Core ?
macos·.netcore
宝桥南山3 个月前
Microsoft Agent Framework(MAF) - 如何将workflow或者A2A client转换成一个AI Agent
microsoft·ai·微软·aigc·.net·.netcore
滴滴答答哒3 个月前
.NET Core 基于 AOP + Polly 实现数据库死锁自动重试
数据库·.netcore·sqlsugar