.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. winform计算器

    引言 本次项目目的主要为了熟悉winform控件使用,以及学习Microsoft.CSharp的使用. 技术栈 C# winform 实现效果 设计与实现 按键使用button空间,计算算式以及计算结 ...

  2. ABC365(D,E)

    ABC365(D,E) D - AtCoder Janken 3 石头剪刀布,给出对手的出招,问在保证不败的情况下最多能赢多少回 记 \(f_i,{0/1/2}\) 表示第 \(i\) 局出石头/剪刀 ...

  3. 4.2 Linux tar打包命令详解

    Linux 系统中,最常用的归档(打包)命令就是 tar,该命令可以将许多文件一起保存到一个单独的磁带或磁盘中进行归档.不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解打包. ...

  4. Codeforces Round 988 (Div. 3) E题解析

    E题 题目链接 Codeforces Round 988 (Div. 3) 题目描述 题目的思路 根据题目的意思,我们可以推断出算法时间复杂度应该在O(N) 对于这道题而言,我们可以分析下思路 首先我 ...

  5. 使用 LLVM 框架创建一个工作编译器,第 1 部分

    使用 LLVM 及其中间表示构建一个自定义编译器 LLVM 编译器基础架构提供了一种强大的方法来优化您使用任何编程语言编写的应用程序.了解本系列文章(由两部分组成)第一部分中有关 LLVM 的基础知识 ...

  6. Educational Codeforces Round 151 (Rated for Div

    C. Strong Password 给定一个字符串\(s\),一个密码的长度\(m\),下界字符串\(l\)和上界字符串\(r\),上下界字符串长度均为\(m\),且字符只在0~9范围内,上界字符串 ...

  7. 基于.NetCore开发博客项目 StarBlog - (32) 第一期完结

    前言 本文记录一下 StarBlog 项目的当前状态与接下来 v2 版本的开发规划. StarBlog 项目从 2022 年开始至今已经 2 年多了,本来早就该给第一期做个小结的,但这种博客类型的项目 ...

  8. Node.js 模拟Apache服务器

    1.知识必备 (1)当服务器响应不同文件类型时,需要设置响应报文头,让浏览器选择相应的编码解析数据. 常用对照表HTTP Mime-type: https://tool.oschina.net/com ...

  9. 基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件

    前言 在软件开发过程中,尤其是在处理跨平台或来自不同来源的项目时,文件的编码格式往往会成为一个不可忽视的问题.不同的操作系统.编程语言和编辑器可能对文件编码有不同的支持和默认设置,这可能导致在打开一个 ...

  10. C#实现控制台显示动态进度条百分比

    C#实现控制台显示动态进度条 前言 private static void Main(string[] args) { bool isBreak = false; ConsoleColor color ...