前段时候做个小项目用到了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. 运行(WIN+R)中能使用的命令:ms-settings:,shell:,cpl,mmc...

    ms-settings: --- DESC --- --- CMD --- Battery Saver ms-settings:batterysaver Battery Saver Settings ...

  2. 比较好的文件复制工具fastcopy和校验工具

    fastcopy http://ipmsg.org/tools/fastcopy.html.en extractfile --可以选用ADLER32计算模式,更快速.

  3. Imagick总结及反思

    2014-08-23 今天安装Imagick出现了很多问题,自己也有些着急,以下为各版本信息: ImageMagick: 安装版本:ImageMagick-6.5.8-Q16 安装目录:E:/PHPS ...

  4. 2014 Hangjs 见闻流水账第一天

    前言 6月21日~6月22日, 第一次跑远门去参加一个大会(广州 -> 杭州),本来打算,在火车的回来的路上,把这两天的东西记录一下,不过,火车上的环境实在恶劣,同时也高估了自己的专注力,所以, ...

  5. TaskHosting - 开发桌面工具原来还可以这么简单

    由来 对于喜欢开发的我经常会写一些小工具,这些小工具多以功能为主,不要求漂亮.个性化的UI.但起码要保证使用方便,因此最基本的功能要有: GUI(图片用户界面) 程序配置的保存与读取(让用户在GUI上 ...

  6. BW基于ALE的主数据增量机制分析

    1     概述 前段时间在项目中碰到一个问题,地点物料0MAT_PLANT_ATTR属性主数据因为有两个多月没有做增量更新,导致在之后的每次增量抽取活动中因为抽取的数据量过大使得在源系统的进程中发生 ...

  7. FEC难:

     飞雨(314698641)  12:03:16 有人研究fec吗把信源编码好信道编码区别开来 ? 杭州桓泽(84894922)  12:52:54fec实际是一种概括性技术可以从信源的方面做fec就 ...

  8. 在matlab中配置vlfeat

    [转自]http://cnyubin.com/?p=85 在VLFeat官网上是这么介绍VLFeat的:VLFeat开源库实现了很多著名的机器视觉算法,如HOG, SIFT, MSER, k-mean ...

  9. 关于Unity程序在IOS和Android上显示内嵌网页的方式

    近期因为有须要在Unity程序执行在ios或android手机上显示内嵌网页.所以遍从网上搜集了一下相关的资料.整理例如以下: UnityWebCore 从搜索中先看到了这个.下载下来了以后发现这个的 ...

  10. JS实现IOS风格对话框 jquery / zepto

    Alert alert("这个是一个alert弹窗"); Alert 自定义参数 alert({ content: "自定义alert弹窗", btnText: ...