首先需要在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的更多相关文章

  1. ASP.NET CORE 中使用AutoMapper进行对象映射

    ASP.NET CORE 中使用AutoMapper进行对象映射 1.什么是AutoMapper? AutoMapper是基于对象到对象约定的映射工具,常用于(但并不仅限制于)把复杂的对象模型转为DT ...

  2. ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射

    本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...

  3. 在 ASP.NET Core 中使用 AutoMapper 使 Entity 和 Resource 之间进行映射

    目录 从 NuGet 安装 AutoMapper 添加 Entity类 和 Resource类 添加一个 Profile文件,配置映射关系 在Startup中对AutoMapper进行注册 在项目中使 ...

  4. 如何在ASP.NET Core中使用JSON Patch

    原文: JSON Patch With ASP.NET Core 作者:.NET Core Tutorials 译文:如何在ASP.NET Core中使用JSON Patch 地址:https://w ...

  5. 如何在ASP.NET Core中编写高效的控制器

    ​通过遵循最佳实践,可以编写更好的控制器.所谓的"瘦"控制器(指代码更少.职责更少的控制器)更容易阅读和维护.而且,一旦你的控制器很瘦,可能就不需要对它们进行太多测试了.相反,你可 ...

  6. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  7. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  8. 在ASP.NET Core中使用百度在线编辑器UEditor

    在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...

  9. ASP.NET Core中的依赖注入(1):控制反转(IoC)

    ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了"标准化&qu ...

随机推荐

  1. [转载] 应用于负载均衡的一致性哈希及java实现

    转载自http://blog.csdn.net/haitao111313/article/details/7537799 这几天看了几遍一致性哈希的文章,但是都没有比较完整的实现,因此试着实现了一下, ...

  2. 【S2-052】漏洞复现(CVE-2017-9805)

    一.漏洞描述 Struts2 的REST插件,如果带有XStream组件,那么在进行反序列化XML请求时,存在未对数据内容进行有效验证的安全隐患,可能发生远程命令执行. 二.受影响版本 Struts2 ...

  3. Chapter 7:Linking

    概述: 在linux上,从c源码到可执行文件主要需要经历translator(compiler.assembler)生成object file,再经由linker连接成executable objec ...

  4. Entity Framework——常见报错总结

    1 实体属性配置为IsRequired()对更新的影响 抛出异常类型DbEntityValidationException 表结构: 实体: public class User { public in ...

  5. java equals 和 == 的区别

    )1. == 可以用来比较基本类型以及引用类型.在基本类型中 == 比较的是两个变量的值是否相等.在引用类型中,== 比较的是两个对象的内存地址是否相等. )2. equals 只能用来比较引用类型. ...

  6. Linux指令 vi编辑,保存及退出

    编辑模式 使用vi进入文本后,按i开始编辑文本退出编辑模式 按ESC键,然后: 退出vi :q! 不保存文件,强制退出vi命令 :w 保存文件,不退出vi命令 :wq 保存文件,退出vi命令 中断vi ...

  7. [面试没答上的问题1]http请求,请求头和响应头都有什么信息?

    最近在找工作,面试官问了一些问题自己并没有回答上,这里做一个小结. http请求,请求头和响应头都有什么信息? 页面和服务器交互最常见的方式就是ajax,ajax简单来说是浏览器发送请求到服务端,然后 ...

  8. unity中.meta提交错误操作导致空脚本

    工作时遇到了一个奇葩的问题,同事做的界面,再策划那里死活无法运行,其他同事的都没有问题.简单一查,是界面上挂了个空脚本,但是同事提交了对应的脚本,其他人那里脚本是正常.随后想到是否是.meta的问题. ...

  9. 从a标签传值中文乱码解决

    <% out.print(new String(request.getParameter("a标签的参数").getBytes("iso8859-1"), ...

  10. cinder控制节点集群

    #cinder控制节点集群 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #cinder块存储控制节点.txt.s ...