接触AutoMapper已经有两年多的时间了,AutoMapper足够轻量级,而且也非常流行,国外的大牛们都使用它。使用AutoMapper可以很方便的实现DTO和领域Model之间的转换,它是一个强大的Object-Object Mapping工具。在ORM框架中,它使持久层对象与DTO对象之间的转换变得相当简单。 随着负责的项目的增多,使用的技术框架一多起来,很多具体的技术点难免记不清, 加上同时兼做需求、研发、质量管控, 有时候写起代码来就感到很手生。 好脑袋不如烂笔头,如下,简单整理一下。

1. 安装AutoMapper

在vs的NuGet程序包控制台install AutoMapper。

2. 使用

AutoMapper是基于约定的,因此在实用映射之前,我们需要先进行映射规则的配置。

Mapper.CreateMap<BizDatOrders, AdjTotalBill>()
.ForMember(dto => dto.CreatedTime, opt => opt.Ignore())
.ForMember(dest => dest.Passenger, map => map.MapFrom(m => m.PsgName)) // 乘机人姓名
.ForMember(dest => dest.BookMan, (map) => map.MapFrom(m => m.BookAccount))
.ForMember(dest => dest.DistributorProfit, map => map.MapFrom(m => m.DisProfit))
.ForMember(dest => dest.PlatformProfit, map => map.MapFrom(m => m.CenProfit));// 预订人 var one = Mapper.Map<AdjTotalBill>(item);

3. 常见异常

如果Mapper使用不当,会出现如下异常:

Missing type map configuration or unsupported mapping.

Mapping types:
CouponUsageDTO -> CouponUsage
Coupon.Domain.DTO.CouponUsageDTO -> Coupon.Domain.Entities.CouponUsage Destination path:
CouponUsage Source value:
Coupon.Domain.DTO.CouponUsageDTO

4. 关于NuGet的升级

NuGet 是 Visual Studio 的扩展工具,在使用Visual Studio开发基于.NET Framework的应用时,Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。

我vs2013的NuGet的版本是2.7,因为要装AutoMapper4.1,要升级到2.8。升级方法:
1. vs2013里“工具”→“扩展和更新”里,在本机已安装里找到NuGet Package Manager(NuGet程序包管理器),卸载。
2. 在联机里,搜索NuGet,安装即可。
(提示:貌似要在安装前先重启vs)
vs扩展产品见微软官网https://visualstudiogallery.msdn.microsoft.com/。 像ReShaper、TestCaseGenerator,都不错。
 

AutoMapper的简单使用的更多相关文章

  1. OOM AutoMapper的简单实用

    OOM  AutoMapper的简单实用 一.前言: OOM顾名思义,Object-Object-Mapping实体间相互转换,AutoMapper也是个老生常谈了,其意义在于帮助你无需手动的转换简单 ...

  2. automapper的简单用法

    AutoMapper对象转换方面(Object-Object Mapping)对象映射工具,实现对象和对象之间的转化.主要应用在项目的dto,model,entity或viewmodel之间转换,其实 ...

  3. AutoMapper使用简单总结

    近期,在用AutoMapper整理一些模型对象映射,顺便小结一下使用的体会.难免有写得不对的地方,谢谢指出! 1. AutoMapper是一个.NET的对象映射工具,可以方便地进行对象间的赋值处理. ...

  4. C# AutoMapper的简单扩展

    AutoMapper可以很方便的将一个实体的属性值转化给另一个对象.这个功能在我们日常的编码中经常会遇到.我将AutoMapper的一些基本映射功能做成扩展方法,在编码中更方便使用. using Sy ...

  5. AutoMapper 的简单使用

    var config = new MapperConfiguration( cfg => cfg.CreateMap<SYS_Menu, MenuTreeNode>() .ForMe ...

  6. ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下

    ADO.NET   一.ADO.NET概要 ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库 二.ADO.NET的组成 ①System.Data  → DataTable, ...

  7. AutoMapper搬运工之自定义映射

    回顾 上节说到了AutoMapper的简单使用,对于复杂的Mapping需要强大的自定义,这节我们来看下AutoMapper的自定义Mapping(Projection) 搬运自Git:https:/ ...

  8. AutoMapper搬运工之初探AutoMapper

    写在前面 知道AutoMapper很久了,但是一直没有用,最近刚好有个场景需要就用了,果然是利器.看了git上的wiki,发现内容其实wiki上写的很全面了,深入的暂时还没挖掘到.不过和群里的朋友交流 ...

  9. AutoMapper用法(转载)

    申明 本文转载自http://www.qeefee.com/article/automapper 作者:齐飞 配置AutoMapper映射规则 AutoMapper是基于约定的,因此在实用映射之前,我 ...

随机推荐

  1. button、label、textfield、页面跳转、传值

    .AppDelegate.m #import “OneViewController.h” //一打开就运行的 -(BOOL)application:(UIApplication *)applicati ...

  2. Eclipse在线集成maven M2eclipse插件

    首先说下版本: Eclipse:3.6 Maven:3.3.1,若不知道如何在本地安装Maven,请参见我的另一篇文章:Window下安装Maven 废话少说,直接讲步骤就好: 1.打开eclipse ...

  3. 异常处理和JDBC

    1.异常: 格式:try{ 要执行的可能出现异常的语句 } catch(Exception e){ 对异常进行处理的语句 }    finally{    一定会被处理的语句 //可以不写 } 当需要 ...

  4. 文件操作总结 (Path,Directory,File)

    Path类就是对字符串的操作,与实际的文件没有任何关系 属性: Path.GetFileName("路径"), //获取文件名带后缀: Path.GetFileNameWithou ...

  5. 如何设置eclipse字体及大小

    1.打开eclipse菜单栏的Windows选项 2.选择其中的preference选项,界面如下图所示 3.选择General –> Appearance –> Colors and F ...

  6. Python处理json格式的数据文件(一些坑、一些疑惑)

    这里主要说最近遇到的一个问题,不过目前只是换了一种思路先解决了,脑子里仍然有疑惑,只能怪自己太菜. 最近要把以前爬的数据用一下了,先简单的过滤一下,以前用scrapy存数据的时候为了省事也为了用一下它 ...

  7. jboss 7 启动问题

    19:30:50,176 INFO [org.jboss.modules] JBoss Modules version 1.1.1.GA19:30:50,458 INFO [org.jboss.msc ...

  8. jQuery中给动态添加的元素绑定事件

    $(document).on(event,selector,function(){ //do somethimg here! });

  9. uva-439

    题意:骑士在一个8*8的棋盘上移动,1-8代表行号,a-h代表列号,给出骑士的初始位置和目的位置,求骑士最少的移动步数:题目隐含一层意思(骑士移动规则是中国象棋的“马”的走法) 输入:一串字符串,包含 ...

  10. 关于windows phone教务在线客户端

    本人是个大二学生,由于学校的教务在线一直没出windows phone的教务在线,而且本身也对wp开发感兴趣,所以就尝试着开发一下 由于没有系统的学习,只能在摸索中前进,这背后的原理很简单,可不容易实 ...