netcore使用AutoMapper
说明:以下是使用过程中看到的其他博主写的,地址如下:
地址一:https://cloud.tencent.com/developer/article/1395155
地址二:https://www.cnblogs.com/yanwuming/p/9609887.html
我的项目是netcore SDK2.2版本,开发软件vs2017;
首先告诉大家,很不幸的是:上面两种方法都试过了,但是都失败了,不知道是不是我自己哪里写错了,或者人品,或者状态不对吧,哎!欲哭无泪~~~~~ 而且我这边在使用的时候,提示已经弃用了,不知道有没有遇到跟我同样问题的朋友。

当时心里也是很不爽的,好吧,后面查阅资料,这样写就OK了:O(∩_∩)O哈哈~
services.AddAutoMapper(typeof(ServiceProfile));
ServiceProfile.cs是我写的一个测试类,继承Profile,代码如下:
public class ServiceProfile : Profile
{
public ServiceProfile()
{
CreateMap<OrderInfo, UserInfoDto>()
.ForMember(des=>des.UserName,opt=>opt.MapFrom(src=>src.Name))
.ForMember(des=>des.CreateTime,opt=>opt.MapFrom(src=>src.CreateTime.ToString("yyyy-MM-dd hh:mm:ss")))
;
}
}
有两个测试类实体OrderInfo和UserInfoDto,这两个就随便写了,大家可以自行测试!
最后,使用时如下:
private readonly IQueryBll queryBll;
private IMapper mapper;
public MongoQueryController(IQueryBll queryBll, IMapper mapper) { this.queryBll = queryBll;
this.mapper = mapper;
}
public IActionResult Index()
{
return View();
} [HttpGet]
[HttpPost]
public async Task<List<UserInfoDto>> QueryByName(string userName) {
if (string.IsNullOrEmpty(userName)) {
return new List<UserInfoDto>();
} var res = await this.queryBll.Query(userName);
return this.mapper.Map<List<OrderInfo>, List<UserInfoDto>>(res);
}
结果居然成功了:
数据库测试数据:

结果:

总结一下,就3步,不知道是不是新的版本更好使用了吗;
第一步:安装引用
install-package AutoMapper
install-package AutoMapper.Extensions.Microsoft.DependencyInjection
第二步:注册
在StartUp.cs 的ConfigureServices方法中注册:
services.AddAutoMapper(typeof(ServiceProfile)); //ServiceProfile为你Mapper的类
第三步:调用
属性/构造函数(测试过了,这两种调用都可以) 注入调用(如上实例)。
不知道大家发现没有,这样写还有一个弊端,就是,当有多个l类似ServiceProfile.cs时,我们难道要一个一个写吗?这样岂不是太累,而且容易忘记,应该有更好的方法,不过目前还没有写对,大家如果有好的建议感谢大家留言探讨;
上述“地址一”的大神其实写的就是那个意思了,反射找到Profile类型,但是我这边不知道怎么的没有成功,有好方法的希望大家一起探讨!
netcore使用AutoMapper的更多相关文章
- Asp.NetCore之AutoMapper进阶篇
应用场景 在上一篇文章--Asp.NetCore之AutoMapper基础篇中我们简单介绍了一些AutoMapper的基础用法以及如何在.NetCore中实现快速开发.我相信用过AutoMapper实 ...
- Asp.NetCore之AutoMapper基础篇
应用场景 现在由于前后端技术的分离,后端程序员在使用ORM框架开发后台API接口的时候,往往会将数据库的"数据模型"直接提供给前端.而大多数时候,可能这些数据并不能够满足前端展示的 ...
- .NetCore 使用AutoMapper
添加引用 AutoMapper AutoMapper.Extensions.Microsoft.DependencyInjection 注册服务 services.AddAutoMapper(); 配 ...
- AutoMapper在asp.netcore中的使用
# AutoMapper在asp.netcore中的使用 automapper 是.net 项目中针对模型之间转换映射的一个很好用的工具,不仅提高了开发的效率还使代码更加简洁,当然也是开源的,htt ...
- NetCore+AutoMapper多个对象映射到一个Dto对象
目录 一. 定义源映射类和被映射类DTO二.注入AutoMapper三.配置映射四.写测试 一.定义源映射对象 为了体现AutoMapper映射特性,在SocialAttribute中的Name属性没 ...
- NetCore AutoMapper的封装
需要引用AutoMapper的Nuget包 如果需要忽略某个字段就在字段上面打标签如下: [IgnoreMap] public string IgnoreValue { get; set; } ...
- netcore 2.2 封装 AutoMapper
在上篇中我们通过创建一个类并继承autoMapper的Profile类 public class Mappings : Profile { public Mappings() { CreateMap& ...
- netcore 2.2 使用 AutoMapper 实现实体之间映射
一.什么是AutoMapper? AutoMapper是一个简单的对象映射框架(OOM),将一个对象映射到另一个对象. 二.AutoMapper的好处 以前的时候我们将DTO对象转换为Model对象时 ...
- .NetCore学习笔记:四、AutoMapper对象映射
什么是AutoMapper?AutoMapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码.这种类型的代码是相当沉闷和无聊的写,所以为什么不发明一个工具来 ...
随机推荐
- 喵哈哈村的魔法考试 Round #1 (Div.2) ABCD
官方题解: http://www.cnblogs.com/qscqesze/p/6418555.html#3623453 喵哈哈村的魔法石 描述 传说喵哈哈村有三种神奇的魔法石:第一种魔法石叫做人铁石 ...
- Codeforces Round #402 (Div. 2) C
Description Igor found out discounts in a shop and decided to buy n items. Discounts at the store wi ...
- 逆序数 HDOJ 4911 Inversion
题目传送门 题意:可以交换两个相邻的数字顺序k次,问最后逆序对最少有多少 分析:根据逆序数的定理如果逆序数大于0,那么必定存在1<=i<n使得i和i+1交换后逆序数减1假设原逆序数为cnt ...
- 模拟+贪心 URAL 1804 The Machinegunners in a Playoff
题目传送门 题意:A队和B队踢球,已知一场比赛A和B的得分情况,问A最小再得几分就能胜利还有最多能的几分还能给B队一丝翻盘的希望.规则如下: 1. 总分数相等的情况下,在客场得分高的获胜,如果还相等, ...
- 水题 Codeforces Round #304 (Div. 2) A. Soldier and Bananas
题目传送门 /* 水题:ans = (1+2+3+...+n) * k - n,开long long */ #include <cstdio> #include <algorithm ...
- linux/centos系统如何使用yum安装vi/vim?
yum安装vim最简单的命令, yum -y install vim* 然后就可以使用vi命令了. 网上的文章: 要使用vim, 使用yum看了一下,发现有4个 vim-common.i386 ...
- state vs props
我们来一个关于 state 和 props 的总结. state 的主要作用是用于组件保存.控制.修改自己的可变状态.state 在组件内部初始化,可以被组件自身修改,而外部不能访问也不能修改.你可以 ...
- iOS面试题之runloop
本文围绕以下几个部分展开对runloop的叙述. 1.runloop是什么/runloop的概念? 2.NSRunLoop 和 CFRunLoopRef? 3.runloop和线程的关系? 4.run ...
- 【转】java序列化一定要应该注意的6个事项!
1.如果子类实现Serializable接口而父类未实现时,父类不会被序列化,但此时父类必须有个无参构造方法,否则会抛InvalidClassException异常. 2.静态变量不会被序列化,那是类 ...
- client系列、offset系列、scroll系列
一.client系列 clientWidth/clientHeight 是我们设置的宽和高加上内边距(没有边框) clientLeft/clientTop 就是我们设置的边框值 二.offset ...