1. AutoMapper 是什么?
  2. 为什么要用AutoMapper?
  3. 如何使用AutoMapper?
  4. 在什么地方配置AutoMapper?
  5. 如何测试my mappings?

AutoMapper 是什么?


AutoMapper是一个对象到对象的映射关系,对象到对象的映射是通过转化一个类型对象输入到一个不同的类型对象输出来工作的,使得AutoMapper让人感兴趣的一点就是他提供了一些比较有趣的规则把繁重的工作从类型对象转换算法中剔除掉,

只要类型对象遵循了AutoMapper建立的规则,基本上不需要额外的配置去做类型对象之间的转化。

为什么要用AutoMapper?


类型转换代码是令人讨厌的,测试类型转换代码更加的令人讨厌,AutoMapper提供了非常简单的配置机制,类型转换测试也变得同样简单,现在真正剩下的需要关心的问题是why use object-object mapping?,

类型转化会发生在项目中很多地方,但是大部分发生在层与层之间的边界,例如 UI/Domain 之间,或者Service/Domain 之间,通常来说一层关心的东西和另外一层关心的东西是不一致的,

所以对象到对象的映射产生了一个隔离的模型,这样每一层的对象的变化更加独立,仅仅会影响对象所在的层,对其他的层不会产生影响

如何使用AutoMapper?


首先,你需要Source类型和目标类型,这个目标类型在设计之初就会受到其所在层的影响,但是AutoMappers依然可以工作的很好,只要目标对象成员名称和源对象成员名称匹配,例如你有一个源对象属性叫FirstName,

那么他将会自动映射 到目标对象成员名称叫FirstName的属性,AutoMapper也支持Flattening

当映射源类型到目标类型时,AutoMapper会忽略空引用异常,这是默认的设计,如果你不喜欢这种设计,你可以结合AutoMapper Custom-value-resolver,如果需要的话。

一旦你有了两个类型,而且引用了AutoMapper,你就可以给这两个类型添加映射,

Mapper.CreateMap<Order, OrderDto>();

左边的类型是源类型,右边的类型是目标类型,用下面的方法去执行一个映射

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

AutoMapper也有非泛型的方法。

在什么地方配置AutoMapper?


如果你使用静态的映射方法,配置时只需要在appDomain中配置一次,这意味着你最好的选择就是把配置代码方法在程序启动项中,例如Global.asax。需要说明的是,在bootstrapper(启动加载器)内配置自己,

这个bootstrapper也被称作为启动方法。

如何测试my mappings?


创建一个映射测试,你要做两件事

  1. 调用启动项中创建映射的方法
  2. 调用Mapper.AssertConfigurationIsValid方法

就像下面这个例子一样:

AutoMapperConfiguration.Configure();

Mapper.AssertConfigurationIsValid();

https://github.com/AutoMapper/AutoMapper/wiki/Getting-started

AutoMapper Getting started的更多相关文章

  1. 恋爱虽易,相处不易:当EntityFramework爱上AutoMapper

    剧情开始 为何相爱? 相处的问题? 女人的伟大? 剧情收尾? 有时候相识即是一种缘分,相爱也不需要太多的理由,一个眼神足矣,当EntityFramework遇上AutoMapper,就是如此,恋爱虽易 ...

  2. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  3. AutoMapper

    什么是AutoMapper? AutoMapper是一个对象和对象间的映射器.对象与对象的映射是通过转变一种类型的输入对象为一种不同类型的输出对象工作的.让AutoMapper有意思的地方在于它提供了 ...

  4. AutoMapper随笔记

    平台之大势何人能挡? 带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4822808.html#skill 先看效果:(完整Demo:https://git ...

  5. AutoMapper:Unmapped members were found. Review the types and members below. Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type

    异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 应用场景:ViewModel==>Mode映射的时候出错 AutoMappe ...

  6. AutoMapper的介绍与使用(一)

    软件环境 vs2015 asp.net mvc 5 .NET Framework 4.5.2 AutoMapper 5.2.0.0 AutoMapper安装 新建asp.net mvc 项目 Auto ...

  7. AutoMapper使用中的问题

    指定值只会执行一次 public class MomanBaseProfile : Profile { public MomanBaseProfile() { CreateMap<Request ...

  8. 【AutoMapper官方文档】DTO与Domin Model相互转换(中)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  9. 【AutoMapper官方文档】DTO与Domin Model相互转换(下)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  10. 【道德经】漫谈实体、对象、DTO及AutoMapper的使用

    写在前面 实体和值对象 实体和对象 故常无欲以观其妙,常有欲以观其徼 初始实体和演化实体 代码中的DTO AutoMapper实体转换 后记 实体(Entity).对象(Object).DTO(Dat ...

随机推荐

  1. CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL)

    CentOS 6.5安装配置LNMP服务器(Nginx+PHP+MySQL) 一.准备篇: /etc/init.d/iptables stop #关闭防火墙 关闭SELINUX vi /etc/sel ...

  2. jQ控制前端输入用户为空是的提醒

    1.在jQ中$(function(){})函数的意思是 $(document).ready(function(){}) 的简写,用来在DOM加载完成之后执行一系列预先定义好的函数 placeholde ...

  3. LoadScript

    function loadScripts(urls, callback) { if (typeof (urls) === "string"){ urls = [urls]; } v ...

  4. C#指定日期为一年中的第几周

    /// <summary> /// 获取指定时间在为一年中为第几周 /// </summary> /// <param name="dt">指定 ...

  5. 【转】Kafka实战-Flume到Kafka

    Kafka实战-Flume到Kafka Kafka   2015-07-03 08:46:24 发布 您的评价:       0.0   收藏     2收藏 1.概述 前面给大家介绍了整个Kafka ...

  6. 将Ubuntu 15.10升级到Ubuntu 16.04

    Ubuntu 16.04 LTS 代号为 Xenial Xerus,其最终版将于 2016 年 4 月 21 日正式发布,Ubuntu16.04 将是非常受欢迎的开源操作系统 Ubuntu 的第 6 ...

  7. thinkphp 项目分组 -开发随笔1

    php中变量的声明, 和变量的初始化 是结合在一起的, 要声明变量, 就是通过初始化变量来实现的. 感觉页面版式的布局, 还是: 先大致规划出布局, 如两栏 三栏, 一览的左右上下结合, 搭配. 然后 ...

  8. PHP中的Memcache详解

    一.Memcache简介 Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力.它可以应 ...

  9. MySql的安装及配置详细指引!

    一.安装My Sql数据库 1.1,首先下载MySQL与HeidiSQL工具,双击打开后可以看到名为”mysql-5.0.22-win32 Setup.exe”的安装程序,双击执行该程序. 1.2,打 ...

  10. codevs2171 棋盘覆盖

    题目描述 Description 给出一张n*n(n<=100)的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米诺骨牌进行掩盖. 输入描述 Input Description 第一 ...