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 无手动赋值
相关推荐
1-1=03 天前
.NET 实现后台任务
c#·.net·.netcore·quartz·hangfire
FuckPatience3 天前
Windows 窗体设计器不支持项目“xxx,因为它面向不受支持的.NET Core 3.1。建议更新到受支持的.NET 版本。
.netcore
csdn_aspnet4 天前
C# .NetCore Swagger ISchemaFilter 处理枚举、特殊类型
c#·.netcore·swagger
code_long4 天前
.net core 连接打印机 使用zpl指令打印机,并且位图本地渲染zpl指令
c#·.netcore·位图·打印机·模板编辑·模板预览
csdn_aspnet5 天前
C# .NetCore Swagger ISchemaFilter Long 转 String 防精度丢失
c#·.netcore·swagger
csdn_aspnet6 天前
C# .NetCore Swagger ISchemaFilter 注入示例值、描述
c#·.netcore·swagger
宝桥南山7 天前
.NET 11 - 尝试一下Minimal API中的异步验证新特性
microsoft·微软·c#·asp.net·.net·.netcore
上位机妹子12 天前
EF Core 两种继承映射:每层次一张表(TPH)与每类型一张表(TPT)
数据库·c#·.netcore·ef core
csdn_aspnet1 个月前
.NetCore Webapi 接口验证请求来源
.netcore·ip·token·签名·webapi·cors·sign
宝桥南山1 个月前
Microsoft Fabric - 简单尝试一下Microsoft Fabric .NET SDK
microsoft·微软·.net·.netcore·powerbi·fabric