在项目中正确使用AutoMapper
AutoMapper是一个轻量级的类库,主要功能是把一个对象转换成另外一个对象,而避免我们每次都手工去转换。
常见几种使用场景:
- 对外服务接口,把逻辑层的实体转换成服务消费者需要的字段。
- UI展现层,把业务对象转换成UI需要展现的字段。
- 用户的输入输出,把DTO与领域模型互转。
相信大家AutoMapper可以做什么已经有了一个基本的了解,下面主要针对AutoMapper在NetCoreWeb中的使用做一个了解。
前置准备
工作中一定要多复用别人造的成熟的轮子,这样可以加快自己的工作进度。当然我的意思也不是说只要会用,我们也要知道其中的原理,但这应该是自己工作之余应该学习的内容。工作讲究的是效率,又快又好是检验工作成果的标准。
Nuget包下载
写本文章时的版本 automapper
为10.0.1 AutoMapper.Extensions.Microsoft.Dependeny
为8.1.1
install-package automapper
install-package AutoMapper.Extensions.Microsoft.Dependeny
项目集成
1、ConfigureServices中注入服务
services.AddAutoMapper(Assembly.Load("NetCoreWebAnalysis"));
2、定义Dto对象
工单
public class Order
{
public int Id { get; set; }
public string Name { get; set; }
public string Desc { get; set; }
public DateTime CreateTime { get; set; }
}
工单Dto
public class OrderOutPut
{
public int Id { get; set; }
public string Name { get; set; }
public string Desc { get; set; }
public string CreateYear { get; set; }
public string CreateMonth { get; set; }
public string CreateDay { get; set; }
}
3、配置映射关系
public class OrderProfile : Profile
{
public OrderProfile()
{
CreateMap<Order, OrderOutPut>()
.ForMember(des => des.CreateYear, source => source.MapFrom(i => i.CreateTime.Year))
.ForMember(des => des.CreateMonth, source => source.MapFrom(i => i.CreateTime.Month))
.ForMember(des => des.CreateDay, source => source.MapFrom(i => i.CreateTime.Day));
}
}
4、执行映射方法测试
[Route("mapper")]
[ApiController]
public class MapperController : Controller
{
private readonly IMapper _mapper;
public MapperController(IMapper mapper)
{
_mapper = mapper;
}
[HttpGet("getmapper")]
public OrderOutPut GetMapper()
{
var order = new Order()
{
Id = 1,
Name = "工单1号",
Desc = "工单描述内容",
CreateTime = DateTime.Now
};
return _mapper.Map<OrderOutPut>(order);
}
}
输出内容
{
"id": 1,
"name": "工单1号",
"desc": "工单描述内容",
"createYear": "2021",
"createMonth": "5",
"createDay": "12"
}
参考
AutoMapper.Extensions.Microsoft.DependencyInjection使用说明
.net core 3.1 WebAPi 使用 AutoMapper 9.0、10.0

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
HttpClient 设置不当引发的一次雪崩!
一. 事件背景 我最近运维了一个网上的实时接口服务,最近经常出现Address already in use (Bind failed)的问题。 很明显是一个端口绑定冲突的问题,于是大概排查了一下当前系统的网络连接情况和端口使用情况,发现是有大量time_wait的连接一直占用着端口没释放,导致端口被占满(最高的时候6w+个),因此HttpClient建立连接的时候会出现申请端口冲突的情况。 具体情况如下: 于是为了解决time_wait的问题,网上搜索了些许资料加上自己的思考,于是认为可以通过连接池来保存tcp连接,减少HttpClient在并发情况下随机打开的端口数量,复用原来有效的连接。但是新的问题也由连接池的设置引入了。 二. 问题过程 在估算连接池最大连接数的时候,参考了业务高峰期时的请求量为1分钟1.2w pv,接口平响为1.3s(复杂的广告推广效果模拟系统,在这种场景平响高是业务所需的原因)。 因此qps为12000*1.3\60=260 然后通过观察了业务日志,每次连接建立耗时1.1s左右, 再留70%+的上浮空间(怕连接数设置小出系统故障),最大连接数估计为2601....
-
下一篇
2021年关于Java的一些有趣的事实
以下数据来源于IDEA官方官网 > 1.哪些国家使用Java语言最多 数据: 使用Java语言最多的三个国家分别是:韩国(55%),中国(47%)以及德国(34%) 简评: 原来技术美国使用Java语言看起来比不上我们中国啊。 2.Java版本使用比较 数据 简评 Java8(LTS版)以其牢固的地位遥遥领先。看起来Java8的Lambda 表达式,Stream API深爱喜爱啊。 而另一个LTS版Java11使用数没有Java8多,但相比2019增长了10个百分点。 我用的Java11 3.使用最多的应用服务器 数据 简评 很容易理解吧,因为Spring Boot才是王者吧,它默认的Apache Tomcat当然是占比最多的了。 4.使用最多的框架 数据 简评 没有意外,还是Spring Boot一统天下。 而我在用的Vert.x只占3%...哭泣中 5.如何构建包 简评 还是Spring Boot,因为它默认打出来的就是Jar,就是embedded server。 6.使用最多的单元测试框架 简评 在Java的世界中,想必使用最多的单元测试框架是Junit与Mockito了。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19
- MySQL数据库在高并发下的优化方案
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7,8上快速安装Gitea,搭建Git服务器