接触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. Server.mappath用法

    1.Server.MapPath ("/") 应用程序根目录所在的位置 如 C:\qq\qqroot\ 2.Server.MapPath ("./") 表示所在 ...

  2. JavaScript中对象的含义与this的指向

    JavaScript中的对象:无序属性的集合 -其属性可以包含基本值.对象或函数.对象就是一组没有顺序的值.我们可以吧JavaScript中的对象想象成键值对,其中值可以是数据和函数.对象的行为和特征 ...

  3. 集成TBS(腾讯浏览服务)x5内核的webView

    由于公司产品需要展示html5页面,一开始我使用的是android自带webview,一些简单的页面没什么问题,但是碰到比较复杂的页面就让人无语了. 1.Android各大厂商都有自己定制的ROM,导 ...

  4. 用SYS_CONNECT_BY_PATH进行层级查询时的排序问题

    用SYS_CONNECT_BY_PATH进行层级查询时, 对同一级别的节点进行排序,可以加order SIBLINGS by 子句实现 WITH N2 AS( SELECT n.ID, org.&qu ...

  5. MySQL Table is marked as crashed 解决方法

    MYSQL数据表出现问题,提示: ERROR 144 (HY000): Table './dpt/dpt_production' is marked as crashed and last (auto ...

  6. Services (服务)

    */ .hljs { display: block; padding: 0.5em; background: #F0F0F0; } .hljs, .hljs-subst, .hljs-tag .hlj ...

  7. 在已有 Xcode 项目中 加入Cordova框架

    转自:http://www.jianshu.com/p/656838ae92bc 我们知道,在UIKit中的UIWebView虽然已经提供了很多功能了,比如JavaScript和Objc之间的通信.但 ...

  8. MSP430单片机的位操作

    MSP430单片机属于RISC(Reduced Instruction Set Computer)型处理器.与普通的51单片机的复杂指令集相区别.普通51单片机执行一条指令最少需要12个时钟周期,而R ...

  9. [CSDN转载]致C语言初学者—指针注意项

    在论坛里经常见到一些新人对指针提出一些问题,作为一个经历过许多错误后的新手,我想把自己的经历说出来,避免让后来人继续这样的错误.    在讲解指针之前,需要理解一下内存空间.内存是随机存取器,计算机上 ...

  10. sgdisk常用操作

    与fdisk创建MBR分区一样,sgdisk是一个创建GPT分区的工具,如果你还不了解GPT分区,请参考The difference between booting MBR and GPT with ...