.NET CORE 中用AutoMapper将实体转Dto

星速云 2019-08-31 10:06:02 193 收藏
展开
在开发过程中,经常会碰到数据实体对象(Entity)和数据传输对象(Dto)的转换,手写代码太烦太LOW,可以用 AutoMapper 按规则自动转换。

1、安装两个依赖包,通过Nuget安装

AutoMapper 
AutoMapper.Extensions.Microsoft.DependencyInjection //startup 中 services.AddAutoMapper(); 需要依赖此包。

2、在Startup中添加AutoMapper

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    //添加对AutoMapper的支持,会查找所有程序集中继承了 Profile 的类,,,,,,,牛逼啊,下面的类自动调用到了 AutoMapperConfigs: Profile,他说“会查找所有程序集中继承了 Profile 的类”
    services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
}

3、创建AutoMapper映射规则,继承 Profile

public class AutoMapperConfigs: Profile
{
        //添加你的实体映射关系.
        public AutoMapperConfigs()
        {
            //UserEntity转UserDto.
            CreateMap<UserEntity, UserDto>()
                //映射发生之前
                .BeforeMap((source,dto) => {
                    //可以较为精确的控制输出数据格式
                    dto.CreateTime = Convert.ToDateTime(source.CreateTime).ToString("yyyy-MM-dd");
                })
                //映射发生之后
                .AfterMap((source, dto) => {
                    //code ...
                });
 
            //UserDto转UserEntity.
            CreateMap<UserDto, UserEntity>();
        }
}

4、在Controller构造函数中注入IMapper,然后在方法中使用

public class UserController : Controller
{
     private readonly IMapper _mapper;
     public UserController(IMapper mapper)
     {
         _mapper = mapper;
     }
 
     [HttpGet]
     public JsonResult Get(int id=1)
     {
         //模拟数据
         var user = new UserEntity() { Id = id, UserName = "UserA" };
         //实体对象转Dto对象
         var userDto = _mapper.Map<UserDto>(user);
         return new JsonResult(userDto);
     }
 
     [HttpGet]
     public JsonResult Get()
     {
         //模拟数据
         var users = new List<UserEntity>();
         for (int i=0;i<5;i++)
         {
             users.Add( new UserEntity() { Id = i, UserName = $"User{i}" });
         }
         
         //实体对象集合转Dto对象集合
         var userDtos = _mapper.Map<List<UserDto>>(usesr);
         return new JsonResult(userDtos);
     }
     
}
————————————————

原文链接:https://blog.csdn.net/wx_15323880413/article/details/100169581

.NET CORE 中用AutoMapper将实体转Dto的更多相关文章

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

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

  2. ASP.NET Core搭建多层网站架构【8.2-使用AutoMapper映射实体对象】

    2020/01/29, ASP.NET Core 3.1, VS2019, AutoMapper.Extensions.Microsoft.DependencyInjection 7.0.0 摘要:基 ...

  3. .Net Core2.2 使用 AutoMapper进行实体转换

    一.遇到的问题 在. Core Api 的编写中,我们经常会对一些功能点进行新增编辑操作,同时我们有时也会进行查询,但是我们查询的表的数据与我们返回的数据相差甚大,这是我们有需要自己手动进行类型的转换 ...

  4. ASP.NET Core教程:ASP.NET Core使用AutoMapper

    一.前言 在实际的项目开发过程中,我们使用各种ORM框架可以使我们快捷的获取到数据,并且可以将获取到的数据绑定到对应的List<T>中,然后页面或者接口直接显示List<T>中 ...

  5. .net core使用AutoMapper

    AutoMapper文档:http://docs.automapper.org/en/stable/The-MyGet-build.html 新的版本抛弃了静态API方法,我们将使用依赖注入来完成. ...

  6. EF Core怎么只Update实体的部分列数据

    下面是EF Core中的一个Person实体: public partial class Person { public int Id { get; set; } public string Code ...

  7. ASP。NET Core Blazor CRUD使用实体框架和Web API

    下载source code - 1.7 MB 介绍 *请查看我的Youtube视频链接来学习ASP.NET Core Blazor CRUD使用实体框架和Web API. 在本文中,我们将了解如何为A ...

  8. 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射

    一.前言 在实际项目开发过程中,我们使用到的各种 ORM 组件都可以很便捷的将我们获取到的数据绑定到对应的 List<T> 集合中,因为我们最终想要在页面上展示的数据与数据库实体类之间可能 ...

  9. netcore 2.2 使用 AutoMapper 实现实体之间映射

    一.什么是AutoMapper? AutoMapper是一个简单的对象映射框架(OOM),将一个对象映射到另一个对象. 二.AutoMapper的好处 以前的时候我们将DTO对象转换为Model对象时 ...

  10. .Net Core使用AutoMapper做对象关系映射

    我想很多后端开发者,纠结于如何在Dto及表实体中做属性关系映射,因为真的太繁琐了., ⒈如何使用? Mapper.Initialize(cfg => cfg.CreateMap<Users ...

随机推荐

  1. Redis的ZSet底层数据结构,ZSet类型全面解析

    文章目录 一.ZSet有序集合类型 1.1 简介 1.2 应用场景 1.3 底层结构 1.4 ZSet常用命令 二.ZSet底层结构详解 2.1 数据结构 2.2 压缩列表ZipList 2.3 跳表 ...

  2. 重温c语言之,7天开整,就是随便的写写,第二天

    一:操作符 除法: 如果都是整数,除数,被除数都是整数,那么结果:就是整数的商(没有小数部分的),例如:7/2=3: 如果除数或者被除数其中一个是浮点数,那么结果就是(条件是:能除尽的,并且小数在基础 ...

  3. PWN(栈溢出漏洞)-原创小白超详细[Jarvis-level0]

    ​ 题目来源:Jarvis OJ https://www.jarvisoj.com/challenges 题目名称:Level0 题目介绍: 属于栈溢出中的ret2text 意思是Return to ...

  4. Bulk-Crap-Uninstaller:一个高效卸载,轻松管理你的应用程序的.Net开源工具

    我们在工作中,经常需要安装大量的软件,随着应用程序的不断增多,管理这些软件变得非常困难. 下面介绍一款具备高效.简洁的特点,可以帮助我们快速卸载大量不需要的应用程序,让电脑管理变得更加轻松. 01 项 ...

  5. 两个新出的 JavaScript 运算符

    在 ECMAScript 2021(ES12)中,JavaScript 引入了新的逻辑赋值操作符 &&= 和 ??=.这些操作符将逻辑运算符与赋值运算符相结合,提供了更加简洁.直观的赋 ...

  6. Golang的GMP调度模型与源码解析

    0.引言 我们知道,这当代操作系统中,多线程和多进程模型被广泛的使用以提高系统的并发效率.随着互联网不断的发展,面对如今的高并发场景,为每个任务都创建一个线程是不现实的,使用线程则需要系统不断的在用户 ...

  7. ARC121E Directed Tree

    ARC121E Directed Tree 有意思的容斥加树 dp. 思路 \(a_i\) 可以是除去 \(i\) 祖先之外的所有点,考虑 \(a_i\) 的逆排列. 每一个 \(i\) 在正排列里都 ...

  8. Spring MVC 3.2 技术预览(一):Servlet 3介绍,异步支持

    原文地址:http://blog.springsource.org/2012/05/06/spring-mvc-3-2-preview-introducing-servlet-3-async-supp ...

  9. 性能检测工具之Lighthouse

    转载:https://mp.weixin.qq.com/s?src=11&timestamp=1618929340&ver=3020&signature=oXyx*RDLXjN ...

  10. 理解Flink之四State

    在Flink的官网写着:Stateful Computations over Data Streams. 基于状态计算的数据流. 在流式计算中,希望做一些聚合分析等.那么就需要保存当前日志的状态,以备 ...