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. PySpark 报错 java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver

    解决方案: mv mysql-connector-java-8.0.20.jar $SPARK_HOME/jars/ 驱动文件mysql-connector-java-8.0.20.jar是从mave ...

  2. Hottest 30 of codeforce

    1. 4A.Watermelon 题目链接:https // s.com/problemset/problem/4/A 题意:两人分瓜,但每一部分都得是偶数 分析:直接 对2取余,且 w != 2 # ...

  3. 51 nod | 1007 正整数分组(背包DP)

    补题链接:Here 将一堆正整数分为2组,要求2组的和相差最小. 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的. 输入 第1行:一个数N,N为正 ...

  4. AtCoder ABC 181 个人题解(本场GJ x 3)

    补题链接:Here A - Heavy Rotation 对 \(N\) 进行奇偶判断,奇数穿 Black .偶数穿 White B - Trapezoid Sum 前 \(n\) 项和公式:\(S_ ...

  5. <vue 路由 5、动态路由-标签上传递参数>

    一.效果 在about页面点击"我的",路径里传入了参数zhangsan,在"我的"页面里接收传递过来的张三并展现出来.注:标签中传递参数写法 二.代码结构 注 ...

  6. tinymce富文本编辑器升级问题

    突然这样,之前好好地.

  7. Redis 也支持全文搜索 了?这也太强了

    在 2021 年我就了解到 RediSearch 这个项目,并已经把它用于我的开源项目 newbee-mall-pro 中. 就我的使用体验来说,简单场景下,用来平替 Elasticsearch 的使 ...

  8. springboot启动流程 (2) 组件扫描

    SpringBoot的组件扫描是基于Spring @ComponentScan注解实现的,该注解使用basePackages和basePackageClasses配置扫描的包,如果未配置这两个参数,S ...

  9. [转帖]JVM参数配置及调优

    https://cloud.tencent.com/developer/article/2235751 JVM参数分类 jvm 参数可分为三类: 标准参数:以 "-" 开头的参数 ...

  10. [转帖]必看!PostgreSQL参数优化

    https://zhuanlan.zhihu.com/p/333201734 前不久,一个朋友所在的公司,业务人员整天都喊慢. 朋友是搞开发的,不是很懂DB,他说他们应用的其实没什么问题,但是就是每天 ...