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,如需转载请自行联系原作者
目录
相关文章
|
SQL 监控 索引
AutoMapper自动映射
十年河东,十年河西,莫欺少年穷。 学无止境,精益求精。 不扯犊子,直接进入正题: AutoMapper自动映射常用于EF中,能很好的解决DTO和Model之间相互映射的问题。在未使用AutoMapper之前,我们回顾下传统的对象相互映射的方法。
2132 0
|
前端开发
8分钟学会使用AutoMapper
原文:8分钟学会使用AutoMapper 一.什么是AutoMapper与为什么用它。 它是一种对象与对象之间的映射器,让AutoMapper有意思的就是在于它提供了一些将类型A映射到类型B这种无聊的实例,只要B遵循AutoMapper已经建立的惯例,那么大多数情况下就可以进行相互映射了。
1057 0
AutoMapper 使用总结1
原文:AutoMapper 使用总结1 初识AutoMapper 在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层、业务逻辑层、服务层、数据访问层。层与层访问需要数据载体,也就是类。
889 0