很早就听说AutoMapper了。这些天一直在写api接口,发现之前的类型转换有点问题,就想到了用AutoMapper。用作DTO转换工具。  废话不多说,直接开些代码

首先 在Vs中找到 工具---NuGet包管理器-----控制台。选中要安装到那个项目中,输入Install-Package AutoMapper。如果安装提示错误,请重新卸载安装NuGet。

安装成功之后。目前是最新版本的6.1.配置AutoMapper。在项目中新建类似这样的目录。首先说说Configure文件,这个当然是配置文件了。这里推荐使用AutoMapper的静态初始化方法配置实体的映射。

/// <summary>
/// AutoMapper配置
/// </summary>
public class Configuration
{
public static void Configure()
{
Mapper.Initialize(cfg =>
{
cfg.AddProfile<StoreProfile>();
cfg.CreateMap<Model.User,Api.Result.User>();//从Model.User映射到Api.Result.User }); }
}

对象实体间的映射配置可以直接用map映射,也是通过配置文件的形式。

配置文件的写法也很简单,通过配置文件的方式,便于我们很好的分类映射。比如上面的StoreProfile就是配置商城中实体间的映射的。

public class StoreProfile:Profile
{ public StoreProfile()
{
CreateMap<Model.Store.Product, Api.Result.Store.Product>();//从Model.Store.Product中映射值到Api.Result.Store.Product
} }

  注意这里的类要继承Profile。在构造函数中我们可以写实体间的映射。多个映射也是同样的写法。这样就完成了通过配置文件的形式进行映射。注意有个坑,如果映射的类中存在另外一个类,而这个类为在AutoMapper中进行映射是会报错。

配置好之后怎么用呢。

   var  list=New List<Model.Store.Product>();
var result= Mapper.Map<List<<Api.Result.Store.Product>>(list);//这样就完成了转换,得到我们api中的Product列表

  是不是很简单的。对于单个映射,写法更简答了,var model=Mapper.Map<转换后的类型>(转换前的实体);

最后在Gloable.ASPX中的应用程序启动事件中加入 AutoMapper.Configuration.Configure();是不是很简单呢。目前只是对应源实体和目的实体字段名称一一对应的情况,对于复杂清空,请期待。

记在WEBAPI中AutoMapper的初使用方法的更多相关文章

  1. 分享一个简单程序(webApi+castle+Automapper+Ef+angular)

    前段时间在周末给朋友做了一个小程序,用来记录他们单位的一些调度信息(免费,无版权问题).把代码分享出来.整个程序没有做任何架构.但是麻雀虽小,用到的技术也没少.WebApi+Castle+AutoMa ...

  2. 重温ASP.NET WebAPI(一)初阶

    重温ASP.NET WebAPI(一)初阶   前言 本文为个人对WebApi的回顾无参考价值.主要简单介绍WEB api和webapi项目的基本结构,并创建简单地webaapi项目实现CRUD操作. ...

  3. Autofac - MVC/WebApi中的应用

    Autofac前面写了那么多篇, 其实就是为了今天这一篇, Autofac在MVC和WebApi中的应用. 一.目录结构 先看一下我的目录结构吧, 搭了个非常简单的架构, IOC(web), IBLL ...

  4. WebAPI中无法获取Session对象的解决办法

    在MVC的WebApi中默认是没有开启Session会话支持的.需要在Global中重写Init方法来指定会话需要支持的类型 public override void Init() { PostAut ...

  5. webapi 中的本地登录

    WebApi 身份验证方式 asp.net WebApi 中有三种身份验证方式 个人用户账户.用户可以在网站注册,也可以使用 google, facebook 等外部服务登录. 工作和学校账户.使用活 ...

  6. webapi 中使用 protobuf

    相比json来说,好处是速度更快,带宽占用更小.其效果大致等于json+Gzip. 在webapi中使用protobuf的方法为: 引用nuget包 Install-Package protobuf- ...

  7. 【AspNetCore】【WebApi】扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat)

    扩展Webapi中的RouteConstraint中,让DateTime类型,支持时间格式化(DateTimeFormat) 一.背景 大家在使用WebApi时,会用到DateTime为参数,类似于这 ...

  8. 在asp.net WebAPI 中 使用Forms认证和ModelValidata(模型验证)

    一.Forms认证 1.在webapi项目中启用Forms认证 Why:为什么要在WebAPI中使用Forms认证?因为其它项目使用的是Forms认证. What:什么是Forms认证?它在WebAP ...

  9. 在WebAPI中自动创建Controller

    在MIS系统中,大部分的操作都是基本的CRUD,并且这样的Controller非常多. 为了复用代码,我们常常写一个泛型的基类. public class EntityController<T& ...

随机推荐

  1. 第九章 自定义mixer adapter

    1 install/kubernetes/helm/istio/templates/crds.yaml 序号 名称 用途 分类 归属 virtualservices.networking.istio. ...

  2. 如何在Solr中实现多core查询

    基于solr或者elasticsearch提供的多核,多索引,多shard等查询能力,一般都是由lucene提供的多索引查询的功能演化而来的,这个功能在单机版的lucene里面确实没有发挥多大的威力, ...

  3. 几种查询方法(lambda Linq Enumerable静态类方式)

    1.需要一个数据源类: using System; using System.Collections.Generic; namespace Linq { public class Student { ...

  4. 一次使用 Redis 优化查询性能的实践

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,一次使用 Redis 优化查询性能的实践 应用背景 有一个应用需要上传一组ID到 ...

  5. leetcode112

    /** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...

  6. 「小程序JAVA实战」小程序的举报功能开发(68)

    转自:https://idig8.com/2018/09/25/xiaochengxujavashizhanxiaochengxudeweixinapicaidancaozuo66-2/ 通过点击举报 ...

  7. Spring Data JPA 基本使用

    Spring Data 简化开发,支持Nosql和关系型数据库, DEMO https://github.com/easonstudy/boot-demo/tree/master/boot-sprin ...

  8. istview android:cacheColorHint,android:listSelector属性作用(转)

    原文ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用 ...

  9. JSP九大对象

    内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 JSP中九大内置对象为: request——请求对象——类型 javax.servlet.ServletRe ...

  10. Python dict() 函数

    Python dict() 函数  Python 内置函数 描述 dict() 函数用于创建一个字典. 语法 dict 语法: class dict(**kwarg) class dict(mappi ...