zoukankan      html  css  js  c++  java
  • .NET CORE 中用AutoMapper将实体转Dto

    .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

  • 相关阅读:
    [na]ip数据包格式
    [js]浏览器同源策略(same-origin policy)
    [sql] 同库表(结构)的备份和sql聚合&navicat使用
    [svc]tcp三次握手四次挥手&tcp的11种状态(半连接)&tcp的time-wait
    [svc]ip地址划分
    [css]单/多行居中&字体设置
    时间戳转为C#格式时间
    windows 8 中 使用 httpclient
    oralce 查看是否启动 登陆 创建用户 常用命令小记
    SQL递归查询(with cte as)
  • 原文地址:https://www.cnblogs.com/wgscd/p/12890159.html
Copyright © 2011-2022 走看看