前段时候做个小项目用到了autoMapper(参考了NOP里的用法),感觉还行,用起来挺方便的。首先复杂的东西我就不说了,至于详细的教程我也就不写了,比较园子里有很多这样的文章,我就分享下,在项目中实际的用法。毕竟我们自己练习和项目中使用还是有些差别的。

一、创建AutoMapper转换规则

首先代码如下:

            //===============================执行AutoMapper开始====================================================var startUpTaskTypes = typeFinder.FindClassesOfType<IStartupTask>();var startUpTasks = new List<IStartupTask>();foreach (var startUpTaskType in startUpTaskTypes)startUpTasks.Add((IStartupTask)Activator.CreateInstance(startUpTaskType));//sortstartUpTasks = startUpTasks.AsQueryable().OrderBy(st => st.Order).ToList();foreach (var startUpTask in startUpTasks)startUpTask.Execute();//===============================执行AutoMapper结束====================================================
            builder.Update(container);

代码分析如下:

1、在网站初始化的时候,加载所有web网站中所有程序集。

2、找到所有实现了IStartupTask接口的实现类,并创建

3、执行所有IStartupTask接口的实现类的Execute()方法,该方法执行并创建AutoMapper映射关系

IStartupTask实现类也很简单,这里我没有用到复杂的转换规则,如果有复杂的规则大家可以参考其他文章,代码如下:

  public class AutoMapperStartupTask:IStartupTask{public void Execute(){Mapper.CreateMap<AnnexSetting, AnnexSettingDto>();Mapper.CreateMap<AnnexSettingDto, AnnexSetting>();Mapper.CreateMap<BaseMpSet, BaseMpSetDto>();Mapper.CreateMap<BaseMpSetDto, BaseMpSet>();}}

上面我们就完成了两个Model模型和DTO实体之间做的转换规则,如果有其他的模型和DTO实体的转换规则可以在这里添加。注:这些工作都是网站初始化的时候一次加载执行的。

二、执行AutoMapper转换规则

首先还是看代码:

  public static class MappingExtensions{public static TDestination MapTo<TSource, TDestination>(this TSource source, TDestination destination){// return Mapper.DynamicMap<TSource, TDestination>(source);  return Mapper.Map(source, destination);}public static TDestination MapTo<TSource, TDestination>(this TSource source){return Mapper.Map<TSource, TDestination>(source);}#region 设置/// <summary>/// 附件设置/// </summary>/// <param name="model"></param>/// <param name="destination"></param>/// <returns></returns>public static AnnexSetting ToEntity(this AnnexSettingDto model, AnnexSetting destination){return model.MapTo(destination);}public static AnnexSettingDto ToModel(this AnnexSetting entity){return entity.MapTo<AnnexSetting, AnnexSettingDto>();}#endregion}

上面的代码其实是执行Mapper的标准写法,我们在使用的时候可以这样写:

 1  public ActionResult Annex()
 2         {
 3             //这里其实从数据库加载出来的模型类
 4             var annexSettings = _settingService.LoadSetting<AnnexSetting>();
 5
 6             //将模型类转换为dto类
 7             var model = annexSettings.ToModel();
 8             //将dto对象传输到页面上
 9             return View(model);
10         }

从上面第七行代码看出,我们只需调用这个方法即可实现转换,就这么简单啦。。。

转载于:https://www.cnblogs.com/xujie520/p/5145376.html

AutoMapper用法一瞥相关推荐

  1. AutoMapper用法

    AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 作者:齐飞 原文:http://www.qeefee.com/article/auto ...

  2. dommel mysql_.Net Core AA.FrameWork应用框架介绍

    开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...

  3. .Net Core AA.FrameWork应用框架介绍

    开发多年,一直在从社区获取开源的便利,也深感社区力量的重要性,今天开源一个应用基础框架AA.FrameWork,也算是回馈社区,做出一点点贡献,希望能够帮助类似当年入行的我. AA.FrameWork ...

  4. AutoMapper基本用法

    AutoMapper的基本用法 AutoMapper的使用场景 安装AutoMapper 注册AutoMapper Profile的用法 控制器中注入你的IMapper 创建Model对象和Dto对象 ...

  5. automapper java 有什么_AutoMapper用法

    什么是AutoMapper? 在多层结构中,经常用到对象到对象的转化,手工去写复制太过麻烦.而AutoMapper就是一个可以实现自动转换的类库. 它提供了一些有趣的约定,从而弄清楚如何将类型A映射到 ...

  6. AutoMapper的简单用法

    第一步 ,下载组件(我选择的是8.1.1) 第二步 ,创建一个文件夹AutoMapper,这样我们把所有文件放在这里 第三步,创建一个Configration类,用来配置Mapper 在这里用到了Ma ...

  7. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

  8. c# AutoMapper 使用方式和再封装

    安装方式:使用vs自带的nuget管理工具,搜索AutoMapper ,选择第一个安装到你的项目即可. 我从网上找了一些资料, 参考网址:http://blog.csdn.net/csethcrm/a ...

  9. c# automapper 使用

    一.最简单的用法 有两个类User和UserDto 1 public class User2 {3 public int Id { get; set; }4 public string Name { ...

最新文章

  1. MySQL面试题 | 附答案解析(三)
  2. ITK:将内核应用于非零图像中的每个像素
  3. 【Java】switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上
  4. json字符串与对象如何相互转换
  5. 10张图22段代码,万字长文带你搞懂虚拟内存模型和malloc内部原理
  6. python装饰器的通俗理解_简单理解Python装饰器
  7. C++工程师的Rust迁移之路
  8. declaration of 'com.afollestad.materialdialogs.R$id' appears in /data/app/xxx/split_lib_slice_3_apk
  9. puzzle(0151)《24点》
  10. 移动智能与终端安全防护
  11. liquidFill---实现柱状水滴图
  12. 最全大数据学习资源整理
  13. 2.1 Converting Celsius to Fahrenheit
  14. 触摸屏手机的工作原理是怎样的?
  15. 李宏毅-机器学习-RNN-笔记
  16. 计算机中哪些是rom哪些是ram,电脑RAM和ROM的区别是什么?RAM和ROM有哪些作用?
  17. 控制系统仿真技术类毕业论文文献包含哪些?
  18. 神经网络训练的一般步骤,神经网络是怎么训练的
  19. 5.3 Python图像处理之图像编码-算术编码
  20. 宇宙是设计好的,结构像齿轮一样精准

热门文章

  1. 详介oracle的RBO/CBO优化器
  2. 如何在C#中使用Win32和其他库之三
  3. SQLServer之函数简介 1
  4. PowerDesigner常用设置
  5. 关于双黑洞和引力波,LIGO科学家回答了这7个你可能会关心的问题
  6. 学会这二十个正则表达式,能让你少些1000行代码!
  7. Java - 对象(object) 具体解释
  8. 让Windwos Server 2008 R2 SP1的FTP真正能访问
  9. C# 视频监控系列(11):H264播放器——封装API[HikPlayM4.dll]
  10. 无法从套接字中获取更多数据_数据科学中应引起更多关注的一个组成部分