前段时候做个小项目用到了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));
//sort
startUpTasks = 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的标准写法,我们在使用的时候可以这样写:

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

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

AutoMapper用法一瞥的更多相关文章

  1. AutoMapper用法(转载)

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

  2. Asp.Net AutoMapper用法

    1.AutoMapper简介 用于两个对象映射,例如把Model的属性值赋值给View Model.传统写法会一个一个属性的映射很麻烦,使用AutoMapper两句代码搞定. 2.AutoMapper ...

  3. AutoMapper用法 转载https://www.cnblogs.com/youring2/p/automapper.html

    AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 配置AutoMapper映射规则 AutoMapper是基于约定的,因此在实用映射之前 ...

  4. AutoMapper用法

    可在每层这样写一个类,整合每个实体类的映射 public class AutoMapperHelper { public static void Register() { Mapper.Initial ...

  5. CSS、HTML5、JS

    [att*=value]{}包含value属性的所有元素样式.[id*=div]{} a[href$=jpg]:after{} [att^=value]{}开头字符包含value属性的所有元素样式 [ ...

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

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

  7. automapper的简单用法

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

  8. AutoMapper简单用法

    首先在NuGet添加AutoMapper /// <summary> /// AutoMapper帮助类 /// </summary> public static class ...

  9. AutoMapper Profile用法

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using AutoMappe ...

随机推荐

  1. NFS性能优化

    参考: http://www.techrepublic.com/blog/linux-and-open-source/tuning-nfs-for-better-performance/ 1.服务器端 ...

  2. Objective-C在windows开发环境的搭建

    转自 http://www.hdj.me/objective-c-in-windows 安装GNUstep GNUstep Windows Installer提供了Windows平台下的Objecti ...

  3. Linux下GCC和Makefile实例(从GCC的编译到Makefile的引入) 转

    http://www.crazyant.net/2011/10/29/linux%E4%B8%8Bgcc%E5%92%8Cmakefile%E5%AE%9E%E4%BE%8B%EF%BC%88%E4% ...

  4. web跨域解决方案

    阅读目录 什么是跨域 常用的几种跨域处理方法: 跨域的原理解析及实现方法 总结 摘要:跨域问题,无论是面试还是平时的工作中,都会遇到,本文总结处理跨域问题的几种方法以及其原理,也让自己搞懂这方面的知识 ...

  5. Codeforces Round #384 (Div. 2)D - Chloe and pleasant prizes 树形dp

    D - Chloe and pleasant prizes 链接 http://codeforces.com/contest/743/problem/D 题面 Generous sponsors of ...

  6. asp.net 后台实现删除,划掉效果

    效果: name = "<S>" + fircon + "</br>" + "</S>"; 增加“< ...

  7. callable object与新增的function相关 C++11中万能的可调用类型声明std::function<...>

    在c++11中,一个callable object(可调用对象)可以是函数指针.lambda表达式.重载()的某类对象.bind包裹的某对象等等,有时需要统一管理一些这几类对象,新增的function ...

  8. OGG-03517 Conversion from character set failed解决方法

    用goldengate同步oracle数据到mysql,由于一个字段某行数据的字段集的原因导致 replicat进程报 OGG-03517错 OGG-03517  Conversion from ch ...

  9. 倒计时,js

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. 中国的 Android:尚未发掘的应用市场?

    作者: Wendy Boswell 本周,中国的搜索引擎公司百度最新公布的一篇报告介绍了中国 Android 用户的移动趋势. 下面是一些有价值的统计数据: 眼下在中国,每天的 Android 活跃用 ...