使用 Mapperly 做对象映射
适用范围:ASP.NET Core 8 及以上版本,Riok.Mapperly 4.x。
1. 为什么需要对象映射
一个 Web API 里通常同时存在两种“长得很像”的模型:
Car(实体) ──映射──▶ CarDto(返回给客户端)
Car(实体) ◀──映射── CarDto(客户端提交的数据)
实体承担持久化和业务职责,DTO 承担 API 契约。两者分开,接口才能在不动数据库结构的前提下演进,也不会把车架号、导航属性这类字段意外暴露出去。代价是需要大量“把 Car 的属性抄到 CarDto 上”的代码。
手写映射最直观,但字段一多就既枯燥又容易漏:Car 加了一个字段,CarDto 也加了,映射代码却忘了改,编译器不会提醒。对象映射库就是用来消灭这类代码的。