转载(https://www.jianshu.com/p/29ee5a94c1d9

入门指南(Getting Started Guide)

AutoMapper 是什么?

AutoMapper 是一个对象映射器。对象映射器的原理是将输入对象转换为另一种类型的输出对象。
AutoMapper 提供了各种约定将你的手指从重复无趣的类型A与类型B的映射中解脱出来。只要B类型遵循AutoMapper 的约定,无需任何配置就可以完成A类型与B类型的映射。

为什么使用AutoMapper?

因为写映射代码很无聊。测试映射代码更无聊。AutoMapper 提供简单的类型配置与映射测试。这个问题本质可能是“为什么要使用对象映射器?”,映射发生在应用程序中各个位置,但最多还是发生在层与层之间。如Ui层/Domain层或者Service层/Domain层。
一个层的关注点经常与另一层的关注点不同,所以对象映射可以使得各个层之间的模型隔离。

如何使用AutoMapper?

首先,需要准备源类型和目标类型两种不同的类型。目标类型的设计可能受其所在层的影响,但只要成员的名称与源类型的成员名称匹配,AutoMapper的就能达到最佳效果。如果源类型有一个成员叫“FirstName”,将自动与目标类型中的“FirstName”映射。AutoMapper 也支持扁平化映射。

AutoMapper 从源类型映射到目标类型时默认忽略空引用异常。如果你不喜欢这种方式,可以根据需要将AutoMapper 的方法与自定义值解析器结合使用。

你可以使用MapperConfiguration或者 Mapper静态实例创建映射。MapperConfiguration一般为全局实例,在应用程序启动时实例化。另外,你也可以使用Mapper.Initialize

Mapper.Initialize(cfg => cfg.CreateMap<Order, OrderDto>());
//或者
var config = new MapperConfiguration(cfg => cfg.CreateMap<Order, OrderDto>());

左侧为源类型右侧为目标类型。使用静态或者实例Mapper对象的方法执行映射。

//使用实例的方式实例化Mapper对象
var mapper = config.CreateMapper();
//或者
var mapper = new Mapper(config);
OrderDto dto = mapper.Map<OrderDto>(order);
// 或者使用静态Mapper对象
OrderDto dto = Mapper.Map<OrderDto>(order);

大多数应用程序可以使用依赖注入来注入创建的IMapper实例。

对于那些在编译时可能不知道类型的情况,AutoMapper还具有这些方法的非泛型版本。

在哪里配置AutoMapper?

如果您使用静态Mapper方法,则每个程序域只应进行一次配置。这意味着放置配置代码的最佳位置是应用程序启动时,例如ASP.NET应用程序的Global.asax文件。通常,配置引导程序类在其自己的类中,并且从启动方法调用此引导程序类。 引导程序类应调用Mapper.Initialize来配置类型映射。

怎么测试映射?

要测试映射,您需要创建一个执行以下两项操作的测试:

  • 调用你的引导程序类创建映射
  • 调用MapperConfiguration.AssertConfigurationIsValid

这是一个例子:

var config = AutoMapperConfiguration.Configure();

config.AssertConfigurationIsValid();

00.AutoMapper 之入门指南(Getting Started Guide)的更多相关文章

  1. Linux平台上DPDK入门指南

    1. 简介 本文档包含DPDK软件安装和配置的相关说明.旨在帮助用户快速启动和运行软件.文档主要描述了在Linux环境下编译和 运行DPDK应用程序,但是文档并不深入DPDK的具体实现细节. 1.1. ...

  2. Maven入门指南

    Maven入门指南 本指南旨在第一次为使用Maven的人员提供参考,但也打算作为一本包含公共用例的独立参考和解决方案的工具书.对于新用户,建议您按顺序浏览该材料.对于更熟悉Maven的用户,本指南致力 ...

  3. TensorFlow 2.0 快速入门指南 | iBooker·ApacheCN

    原文:TensorFlow 2.0 Quick Start Guide 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 不要担心自己的形象,只关心如何实现目标.--<原则>,生活 ...

  4. 【HBase】HBase Getting Started(HBase 入门指南)

    入门指南 1. 简介 Quickstart 会让你启动和运行一个单节点单机HBase. 2. 快速启动 – 单点HBase 这部分描述单节点单机HBase的配置.一个单例拥有所有的HBase守护线程- ...

  5. [转载]TFS入门指南

    [原文发表地址] Tutorial: Getting Started with TFS in VS2010 [原文发表时间] Wednesday, October 21, 2009 1:00 PM 本 ...

  6. Vue 入门指南 JS

    Vue 入门指南 章节导航 英文:http://vuejs.org/guide/index.html 介绍 vue.js 是用来构建web应用接口的一个库 技术上,Vue.js 重点集中在MVVM模式 ...

  7. 史上最全!信息安全入门指南<转>

    以下所列出的链接均为在线文档,有志于信息安全的爱好者可由此作为入门指南. 背景知识 常规知识 Sun认证-Solaris 9&10安全管理员学习指南 PicoCTF资料 应用软件安全 OWAS ...

  8. ngnix 一 入门指南

    翻译自:ngnix--Beginner Guide ##ngnix入门指南 本指南给出了nginx的基本介绍,并介绍了可以使用它的完成一些简单任务. 它假定nginx已经安装在读者的机器上. 如果不是 ...

  9. 关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)

    关于 HSSF 和 XSSF 功能的开发者入门指南 笔者深夜无眠,特此对本文翻译一部分,未完成部分待后续更新 本文源文地址 意欲使用 HSSF 和 XSSF 功能快熟读写电子表格?那本文就是为你而写的 ...

随机推荐

  1. ArrayList类源码浅析(二)

    1.removeAll(Collection<?> c)和retainAll(Collection<?> c)方法 第一个是从list中删除指定的匹配的集合元素,第二个方法是用 ...

  2. wait, notify 使用清晰讲解

    一个庙里, 三个和尚,只有一个碗, 三个和尚都要吃饭,所以每次吃饭的时候, 三个和尚抢着碗吃. package interview.java.difference.l05; public class ...

  3. install_github无法安装 Rwebdriver包的解决方法

    1.通过install_githtb安装Rwebdriver包的错误如下: 提示不能打开URL,但是将URL地址输入浏览器地址栏,则可以下载包到本地 2.在网上搜索,发现可以通过本地文件来安装(ins ...

  4. 关于R语言中set.seed()

    在r中取sample时候,经常会有set.seed(某数),经常看见取值很大,其实这里无论括号里取值是多少,想要上下两次取值一样,都需要在每次取值前输入同样的set.seed(某数),才能保证两次取值 ...

  5. 基于球分割的空间二叉树检索算法(sphere-kdtree)

    sphere-kdtree算法思路说明 具体思路如下: 第一.球半径分割,即利用不同的球半径,将三维空间点(向量)分割成多块.所以首先要求确定的就是分割多少块,怎么设置半径最合理. 第二.三维空间点平 ...

  6. 在SOUI3中使用预编译XML

    传统的XML文件通常是utf8编码的文本文件.使用文本文件好处在于方便查阅及修改. SOUI使用XML做为布局描述语言,所有的布局资源都是XML.文本文件格式自由,XML解析器需要对文件中的字符逐个解 ...

  7. 【Python】—— 获取当前运行函数名称和类方法名称

    原文出处: python笔记19-获取当前运行函数名称和类方法名称 获取函数名称 1.在函数外部获取函数名称,用.__name__获取 2.函数内部获取当前函数名称,用sys._getframe(). ...

  8. Linux_IPtables防火墙详解

    目录 目录 Iptables Iptables结构 规则表 规则链 iptables指令用法详解 综合案例 SNAT 策略 DNAT 策略 Iptables规则的备份和还原 iptables 练习 I ...

  9. 阶段3 1.Mybatis_10.JNDI扩展知识_2 补充-JNDI搭建maven的war工程

    使用骨架 src下创建test目录 再新建java和resources两个Directory test下面创建java java的目录,让他作为源码的跟目录 test下的java文件夹 选择 完成之后 ...

  10. Python学习之==>函数

    一.函数是什么: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用函数名就行. 二.函数的作用: 1.简化代码 2.提高代码的复用性 3.代码可扩展 三.定义函数: ...