AutoMapper

简介:

什么是AutoMapper?

AutoMapper是一个对象和对象间的映射器。对象与对象的映射是通过转变一种类型的输入对象为一种不同类型的输出对象工作的。让AutoMapper有意思的地方在于它提供了一些将类型A映射到类型B这种无聊的事情的有趣惯例。只要类型B遵守AutoMapper已经建立的惯例,大多数情况下,映射两种类型零配置就可以了。

为什么使用AutoMapper?

映射代码是无聊的。测试映射代码更无聊。AutoMapper提供了一些简单配置,还有一些简单的映射测试。真正的问题可能是“为什么使用对象-对象的映射呢”?映射可能发生在一个应用的许多地方,但大多数情况下都发生在层与层之间的边界,比如UI/Domain层之间,或者Service/Domain层之间。关注一层通常和关注另一层发生冲突,因此对象-对象间的映射来隔离模型model,这样就只会影响每一层关注的类型。

如何使用AutoMapper?

首先,需要有source(源)和destination(目标)类型。目标类型的设计可能会受它所在的层影响,但是只要目标类型的成员的名字匹配源类型的成员,那么AutoMapper就能很好地工作。比如,如果有一个源类型的成员叫“FirstName“,那么就会自动地映射到名为”FirstName“的目标成员。AutoMapper也支持Flattening(扁平化)。

当映射源到目标时,AutoMapper会忽略空引用异常。这是故意设计的。如果你不喜欢这样子,你可以把AutoMapper和需要的Custom-value-resolvers结合起来使用以达到目的。

只要有了类型和一个AutoMapper的引用,你就可以创建这两个类型的映射。

Mapper.CreateMap<Order,OrderDto>();

左边的类型是源类型,右边的类型是目标类型。使用Map方法执行映射。

OrderDto dto = Mapper.Map<OrderDto>(order);

AutoMapper也有这些方法非泛型的版本,这是针对在编译时你可能不知道类型的场合。

在哪里配置AutoMapper?

如果你使用静态的Mapper方法,那么每个应用域(AppDomain)应该只发生一次配置。那就意味着最好的配置代码的地方应该在应用启动时,例如ASP.NET应用的Global.asax。一般来讲,配置启动类在自己的类中,并且这个启动类从startup方法中调用。

以下为目录,浅绿色为AutoMapper(一) ,橙色为AutoMapper(二),总之,同色文字为同一篇博客。





本文转自tkbSimplest博客园博客,原文链接:http://www.cnblogs.com/farb/p/AutoMapperContent.html,如需转载请自行联系原作者
目录
相关文章
|
数据安全/隐私保护 Docker 容器
minio
minio
647 0
|
SQL 缓存 大数据
【秋招面试】分享一则大数据面经:货拉拉大数据平台实习岗
【秋招面试】分享一则大数据面经:货拉拉大数据平台实习岗
253 0
|
11月前
|
负载均衡 监控 API
dotnet微服务之API网关Ocelot
Ocelot 是一个基于 .NET 的 API 网关,适用于微服务架构。本文介绍了如何创建一个 Web API 项目并使用 Ocelot 进行 API 请求路由、负载均衡等。通过配置 `ocelot.json` 和修改 `Program.cs`,实现对 `GoodApi` 和 `OrderApi` 两个项目的路由管理。最终,通过访问 `https://localhost:7122/good/Hello` 和 `https://localhost:7122/order/Hello` 验证配置成功。
186 1
dotnet微服务之API网关Ocelot
|
12月前
|
缓存 JavaScript 搜索推荐
|
监控 架构师 API
深入浅出微服务架构设计
在软件开发领域,微服务架构因其灵活性和可扩展性而受到青睐。本文将通过浅显易懂的方式解析微服务的核心概念、设计原则及其在实际开发中的应用,帮助读者构建起对微服务架构的全面认识,并启发性地探讨如何在这一架构下寻找到技术与业务的平衡点。
150 3
|
算法 前端开发 JavaScript
【JAVA】JDK11新特性个人分析
【JAVA】JDK11新特性个人分析
274 0
|
数据处理 定位技术 开发者
甘特图、IPO图、DFD图
甘特图、IPO图、DFD图
|
存储 Apache 对象存储
MinIO是什么?
MinIO是什么?
634 0
|
存储 缓存 开发者
如何利用Pygame实现动画效果?
【6月更文挑战第10天】如何利用Pygame实现动画效果?
451 1
|
机器学习/深度学习 人工智能 数据库
飞天技术观|大模型时代,从软件工程到打通行业智能的“最后一公里”
与以往基于白盒化的软件工程范式相比,大模型能够成为新范式,提供真正的智能化引擎,从而使业务应用更高效和智能性。在这种模式下,阿里云将自身定位成大模型时代的算力服务提供者,希望能够为千行百业打通业务智能化的“最后一公里”。
977 2