ASP.NET.Core中使用AutoMapper
首先需要在NuGet中引用AutoMapper的类库
install-package AutoMapper
install-package AutoMapper.Extensions.Microsoft.DependencyInjection
然后创建好要进行转换的类
public class User
{
public int ID { get; set; }
public string Name { get; set; }
}
public class UserDto
{
public int ID { get; set; }
public string Name { get; set; }
}
然后再创建一个标志接口IProfile
internal interface IProfile
{
}
接下来创建一个类来继承AutoMapper的Profile类与实现刚才创建的标志接口IProfile,并且在构造函数中配置关系映射
public class MyProfile: Profile,IProfile
{
public MyProfile()
{
CreateMap<User, UserDto>();
CreateMap<UserDto, User>();
} }
然后再创建一个类来注册关系映射
public class Mappings
{
public static void RegisterMappings()
{
//获取所有IProfile实现类
var allType =
Assembly
.GetEntryAssembly()//获取默认程序集
.GetReferencedAssemblies()//获取所有引用程序集
.Select(Assembly.Load)
.SelectMany(y => y.DefinedTypes)
.Where(type => typeof(IProfile).GetTypeInfo().IsAssignableFrom(type.AsType())); foreach (var typeInfo in allType)
{
var type = typeInfo.AsType();
if (type.Equals(typeof(IProfile)))
{
//注册映射
Mapper.Initialize(y =>
{
y.AddProfiles(type); // Initialise each Profile classe
});
}
}
} }
从上面代码可以看出使用标志接口来判断注册映射类进行注册映射,
最后只需在Startup类的ConfigureServices方法中添加服务和将Mappings添加到中间件即可使用
public void ConfigureServices(IServiceCollection services)
{
services.AddAutoMapper();
services.AddMvc(); }
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
Mappings.RegisterMappings();
}
然后就可以使用automapper,
public class ValuesController : Controller
{ private IMapper _mapper { get; set; }
public ValuesController([FromServices]IMapper mapper)
{
this._mapper = mapper;
} // GET api/values
[HttpGet]
public UserDto Get()
{
User user = new User()
{
ID = ,
Name = "狗娃"
};
var dto = Mapper.Map<User, UserDto>(user);
return dto;
}
}
因为core使用DI创建对象,所以只需添加构造函数即可。
ASP.NET.Core中使用AutoMapper的更多相关文章
- ASP.NET CORE 中使用AutoMapper进行对象映射
ASP.NET CORE 中使用AutoMapper进行对象映射 1.什么是AutoMapper? AutoMapper是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DT ...
- ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射
本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...
- 在 ASP.NET Core 中使用 AutoMapper 使 Entity 和 Resource 之间进行映射
目录 从 NuGet 安装 AutoMapper 添加 Entity类 和 Resource类 添加一个 Profile文件,配置映射关系 在Startup中对AutoMapper进行注册 在项目中使 ...
- 如何在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 ...
- 在ASP.NET Core中使用百度在线编辑器UEditor
在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了"标准化&qu ...
随机推荐
- 【Win 10 应用开发】UI Composition 札记(七):基于表达式的动画
上一篇烂文中,老周给大伙伴们介绍过了几个比较好玩的动画.本篇咱们深化主题,说一说基于表达式的动画.这名字好理解,就是你可以用公式 / 等式来产生动画的目标值.比如,你想让某个可视化对象的高度减半,你的 ...
- flask + Python3 实现的的API自动化测试平台---- IAPTest接口测试平台
**背景: 1.平时测试接口,总是现写代码,对测试用例的管理,以及测试报告的管理持久化做的不够, 2.工作中移动端开发和后端开发总是不能并行进行,需要一个mock的依赖来让他 ...
- Openning
In order to imporve my english writing skill and enhance my understanding of programming ,I'm setti ...
- [动态规划]P1004 方格取数
---恢复内容开始--- 题目描述 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放 人数字0.如下图所示(见样例): A 0 0 0 0 0 0 0 0 0 ...
- 设置SO_RECVBUF和SO_SENDBUF套接字选项
控制套接字的行为(如修改缓冲区的大小). int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) ...
- Imageloader框架
package adapter;import android.content.Context;import android.graphics.Bitmap;import android.graphic ...
- 揭秘 HashMap 实现原理(Java 8)
HashMap 作为一种容器类型,无论你是否了解过其内部的实现原理,它的大名已经频频出现在各种互联网面试中了.从基本的使用角度来说,它很简单,但从其内部的实现来看(尤其是 Java 8 的改进以来), ...
- react入门到进阶(三)
一.react样式 1.内联样式 在以前写html+css的时候,引入css的时候有一种方法就是内联,而在react中又有些不一样,样式是用变量的形式,如下 const styleComponentH ...
- CCF-201509-2-日期计算
问题描述 试题编号: 201509-2 试题名称: 日期计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年 ...
- Python 冒泡法排序
def sequence(disorder='', separators=''): arrays = disorder.split(separators) def desc(): for i in r ...