ASP.NET CORE 中使用AutoMapper进行对象映射
ASP.NET CORE 中使用AutoMapper进行对象映射
1、什么是AutoMapper?
AutoMapper是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DTO,一般用于ViewModel模式和跨服务范畴。
AutoMapper给用户提供了便捷的配置API,就像使用约定来完成自动映射那样。
AutoMapper包含以下功能:平展、投影、配置验证、列表和数组、嵌套映射、自定义类型转换程序、自定义值转换程序 、自定义值格式程序 、Null值替换
AutoMapper是一款单向映射器。这意味着它并没有内建映射对象支持来回写至原始源,除非用户在更新映射对象之后明确地创建逆向反射。这需要 通过设计完成,因为让DTO回写到,比方说:域模型或其他东西,就会更改它的持久性,同时人们也认为它是反模式的。在这种解决方案中,命令消息在双向映射 中往往是更好的选择。然而,在某些特定环境中,有人可能会为双向映射辩解,比如:非常简单的CRUD应用程序。一个支持双向映射的框架就是Glue。
2、在ASP.NET CORE中使用AutoMapper
①在程序包管理控制台中执行命令安装依赖包:
PM> Install-Package AutoMapper -Version 8.1.
PM> Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection -Version 6.1.
②使用依赖关系注入从应用中引用的服务
在Startup类的ConfigureServices()方法中调用AddAutoMapper()服务:
1 public void ConfigureServices(IServiceCollection services)
2 {
3 services.AddAutoMapper();
4 }
③创建AutoMapper映射规则
添加AutoMapperConfigs类,继承Profile类
1 using AutoMapper;
using CodeFirst.Models;
using DAL; namespace CodeFirst.Common
{
public class AutoMapperConfigs : Profile
{
//添加实体映射关系
public AutoMapperConfigs()
{
CreateMap<MainModel, MainInfoResult>(); //MainModel转MainInfoResult
CreateMap<MainInfoResult, MainModel>(); //MainInfoResult转MainModel
}
}
}
④在构造函数中注入IMapper
public class LoginController : Controller
{
private IMapper _mapper; public LoginController(IMapper mapper)
{
_mapper = mapper;
}
}
⑤使用AutoMapper进行对象转换
单个对象转换
public ActionResult RegistSend(MainModel model)
{
var dto = _mapper.Map<MainInfoResult>(model);//MainModel 转MainInfoResult
var re = _userdal.RegistSend(dto);//传入的对象为MainInfoResult
return Json(new { status = re.Status, message = re.Message });
}
集合转换
public List<Student> GetStudentList()
{
//模拟数据
var StuList = new List<StuInfo>()
{
new StuInfo(){ Id=,Name="张三",Sex="男",Age= },
new StuInfo(){ Id=,Name="李四",Sex="男",Age= },
new StuInfo(){ Id=,Name="王五",Sex="男",Age= },
};
//对象集合转Dto集合.
var Students = _mapper.Map<List<Student>>(StuList);
return Students;
}
AutoMapper功能十分强大,支持属性名不同,NULL值替换等等,在此只介绍简单的常用方法,有关详情见AutoMapper官网地址:http://automapper.org/
ASP.NET CORE 中使用AutoMapper进行对象映射的更多相关文章
- ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射
本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...
- .NET CORE 中使用AutoMapper进行对象映射
简介 AutoMapper uses a fluent configuration API to define an object-object mapping strategy. AutoMappe ...
- ASP.NET.Core中使用AutoMapper
首先需要在NuGet中引用AutoMapper的类库 install-package AutoMapper install-package AutoMapper.Extensions.Micros ...
- 在 ASP.NET Core 中使用 AutoMapper 使 Entity 和 Resource 之间进行映射
目录 从 NuGet 安装 AutoMapper 添加 Entity类 和 Resource类 添加一个 Profile文件,配置映射关系 在Startup中对AutoMapper进行注册 在项目中使 ...
- ASP.NET Core中如何针对一个使用HttpClient对象的类编写单元测试
原文地址: How to unit test a class that consumes an HttpClient with IHttpClientFactory in ASP.NET Core? ...
- 如何在ASP.NET Core中使用JSON Patch
原文: JSON Patch With ASP.NET Core 作者:.NET Core Tutorials 译文:如何在ASP.NET Core中使用JSON Patch 地址:https://w ...
- 如何在ASP.NET Core中编写高效的控制器
通过遵循最佳实践,可以编写更好的控制器.所谓的"瘦"控制器(指代码更少.职责更少的控制器)更容易阅读和维护.而且,一旦你的控制器很瘦,可能就不需要对它们进行太多测试了.相反,你可 ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- Asp.net Core中使用Session
前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...
随机推荐
- Mac下搭建Appnium+Python+Ios模拟器环境
转载:https://www.jianshu.com/p/f7cf077d9444 https://blog.csdn.net/a158123/article/details/79684499 htt ...
- discuz x3.2简化的搜索框代码
这是在做一个模板时改的,并不代表这是一个美化或者优化,只是特殊情况下的需要.只有一个搜索框,默认帖子搜索,无搜索按钮,输入内容直接回车搜索. <!--{if $_G['setting']['se ...
- SIFT和SURF特征(草稿)
(草稿) https://www.cnblogs.com/gavanwanggw/p/7073905.html
- Python 模块B
包 包可以把一个模块分成多个文件同样的导入方式即可,用了包之后导入方式不变,使用者感觉不到变化.包其实是一个文件夹(必须得含有__init__.py 这个文件) 导包就是导入init 包的 ...
- JDOJ 1133 分段公司利润
JDOJ 1133: 分段公司利润 JDOJ传送门 Description 企业发放的奖金根据利润提成.利润低于或等于100000元的,奖金可提10%; 利润高于100000元,低于200000元(1 ...
- RabbitMQ消息幂等性问题
文章目录 1. 什么是幂等性?1.1 消息队列的幂等性1.2 模拟重试机制1.2.1 生产者代码1.2.2 消费者代码1.2.3 消费者 application.yml 配置2. 如何保证消息幂等性, ...
- Console工程下如何不显示控制台黑窗口只显示Windows窗口
原文地址https://www.cnblogs.com/smiler/p/4575052.html OpenGL,绘制图形的时候,如果不进行设置,运行的时候会先出现黑窗口再出现Windows窗口. 其 ...
- monkey--常用参数
前戏 参数分类:常规类参数,事件类参数,约束类参数,调试类参数 常规类参数:常规类参数包括帮助参数和日志信息参数,帮助参数用于输出monkey命令使用指导,日志信息参数将日志分为三个等级,级别越高,日 ...
- PATA1001A+BFormat
这里学到的主要是将数字存储到数组中,倒序输出使用取余10加除10 while(sum) { num[len++] = sum % 10; sum /= 10; } 然后是每三位输出一个逗号,因为是倒序 ...
- Mikrotik: Setup SSTP Server for Windows 10 Client
原文: http://www.dr0u.com/mikrotik-setup-sstp-server-for-windows-10-client/ Basic how-to on SSTP for a ...