AutoMapper是一种流行的对象到对象映射库,可用于映射属于不同类型的对象。例如,您可能需要将应用程序中的DTO(数据传输对象)映射到模型对象。

AutoMapper省去了手动映射此类不兼容类型的一个或多个属性的繁琐工作。

一、在Visual Studio中创建一个项目

笔者采用控制台应用程序。

然后安装AutoMapper。可以在NuGet软件包管理器窗口安装AutoMapper

二、使用AutoMapper创建映射

诸如AutoMapper之类的对象到对象映射器将一种类型的输入对象转换为另一种类型的输出对象。考虑以下两个类。

  //实体
public class AuthorModel
{
public int ID { get; set; }
public string AuthorName { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
} //映射实体DTO
public class AuthorDTO
{
public int ID { get; set; }
public string AuthorName { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
}

配置类型AuthorModel和AuthorDTO之间创建映射关系。

      var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<AuthorModel, AuthorDTO>();
});

然后,执行类型之间的映射就像下面的代码所示一样简单。

      IMapper iMapper = config.CreateMapper();
var model = new AuthorModel();
var MapAuthor = iMapper.Map<AuthorModel, AuthorDTO>(model);//映射实体

三、使用AutoMapper完整示例

现在让我们处理一些数据。请参考以下代码,该代码将一些数据存储到源对象中,然后在完成映射后在目标对象中显示属性值。

    static void Main(string[] args)
{
//注册配置
var config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<AuthorModel, AuthorDTO>();
}); //创建映射
IMapper iMapper = config.CreateMapper(); var model = new AuthorModel();
model.ID = 1;
model.AuthorName = "LaoPaoEr";
model.Sex = "男";
model.Age = 23;
model.Phone = "18276250000";
model.Address = "中国上海市浦东新区XXXXX"; var MapAuthor = iMapper.Map<AuthorModel, AuthorDTO>(model);//映射实体 Console.WriteLine(MapAuthor);
Console.WriteLine($"Author Name: {model.AuthorName}");
Console.ReadLine();
}

当您执行上述代码时,将显示存储在目标对象中的作者姓名,使用AutoMapper成功映射了对象!

更多AutoMapper用法请转到http://automapper.org/

C#中使用AutoMapper的更多相关文章

  1. ASP.NET.Core中使用AutoMapper

      首先需要在NuGet中引用AutoMapper的类库 install-package AutoMapper install-package AutoMapper.Extensions.Micros ...

  2. .NET Core中使用AutoMapper

    何为AutoMapper AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 安装AutoMapper 这里我们在NuGet中下载安装Au ...

  3. .NET CORE 中使用AutoMapper进行对象映射

    简介 AutoMapper uses a fluent configuration API to define an object-object mapping strategy. AutoMappe ...

  4. 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射

    一.前言 在实际项目开发过程中,我们使用到的各种 ORM 组件都可以很便捷的将我们获取到的数据绑定到对应的 List<T> 集合中,因为我们最终想要在页面上展示的数据与数据库实体类之间可能 ...

  5. 在 ASP.NET Core 中使用 AutoMapper 使 Entity 和 Resource 之间进行映射

    目录 从 NuGet 安装 AutoMapper 添加 Entity类 和 Resource类 添加一个 Profile文件,配置映射关系 在Startup中对AutoMapper进行注册 在项目中使 ...

  6. Dotnet Core中使用AutoMapper

    官网:http://automapper.org/ 文档:https://automapper.readthedocs.io/en/latest/index.html GitHub:https://g ...

  7. ASP.NET CORE 中使用AutoMapper进行对象映射

    ASP.NET CORE 中使用AutoMapper进行对象映射 1.什么是AutoMapper? AutoMapper是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DT ...

  8. 说说ABP项目中的AutoMapper,Castle Windsor(痛并快乐着)

    这篇博客要说的东西跟ABP,AutoMapper和Castle Windsor都有关系,而且也是我在项目中遇到的问题,最终解决了,现在的感受就是“痛并快乐着”. 首先,这篇博客不是讲什么新的知识点,而 ...

  9. .Net Core 中使用AutoMapper

    1.新建一个类 using AutoMapper; using YourModels; using YourViewModels; namespace YourNamespace { public c ...

  10. ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射

    本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...

随机推荐

  1. Educational Codeforces Round 108 (Rated for Div. 2) (A思维,Bmath,C前缀和,D枚举)

    1519A. Red and Blue Beans 问题简述 给定 \(r\) 个红豆,\(b\) 个蓝豆,差值 \(d\) ,要求我们进行为红蓝豆分组,使得红豆和蓝豆绝对值差值不大于 \(d\) , ...

  2. vue+elementUI+WebSocket接收后台实时消息推送

    vue+elementUI+WebSocket接收后台实时消息推送 https://blog.csdn.net/weixin_40888956/article/details/105971432?ut ...

  3. java项目实战-mybatis-基本配置01-day22

    目录 0. mysql navicate链接分享 1. mvn坐标引入 2. mysql的核心配置文件 3. 返回值类型 别名 4. 将数据的配置提取配置文件 4. log4j修改日志输出 0. my ...

  4. Redis 集群模式搭建

    本文为博主原创,未经允许不得转载: 目录: 1. 哨兵模式与集群模式对比 2. Redis 集群架构搭建 3. 集群原理分析 4. 集群元数据维护方式对比 5. redis 分布式寻址 6. 集群选举 ...

  5. 项目启动一直 DruidDataSource inited,启动很慢

    解决方案: 由于在调试过程中,代码中设置了断点,在启动的时候,服务就一直卡住了,当关闭断点,重新启动就ok了.

  6. TCP 三次握手和四次挥手详解

    转载请注明出处: TCP协议(Transmission Control Protocol) 面向连接的,可靠的,基于字节流的传输层通信协议 特点: 基于连接的:数据传输之前需要建立连接 全双工的:双向 ...

  7. [转帖]深入浅出分析LSM树(日志结构合并树)

    https://zhuanlan.zhihu.com/p/415799237 ​ 目录 收起 零.前言 一.LSM树数据结构定义 二.插入操作 三.删除操作 四.修改操作 五.查询操作 六.合并操作 ...

  8. [转帖]Nginx中absolute_redirect、port_in_redirect配置简述

    一.背景: 我们在访问nginx代理下的项目前端页面时,经常会有访问链接最末尾带不带'/'的问题,当我们访问http://xxxx/home时,如果匹配不到location,会自动加上端口port以及 ...

  9. [转帖]kubernetes(k8s):容器资源限制(内存限制、cpu限制、namespace限制)

    文章目录 1. k8s容器资源限制 2. 内存资源限制实例 3. cpu资源限制 4. namespace设置资源限制 5. namespace中pod的配额 6. namespace的创建.使用和删 ...

  10. Nginx loki监控日志的学习

    Nginx loki监控日志的学习 背景 学习自: https://mp.weixin.qq.com/s/Qt1r7vzWvCcJpNDilWHuxQ 增加了一些自己的理解 第一部分nginx日志的完 ...