• 注册
  • 后端开发博客 后端开发博客 关注:0 内容:2417

    在项目中正确使用AutoMapper

  • 查看作者
  • 打赏作者
  • 当前位置: 职业司 > 后端开发 > 后端开发博客 > 正文
    • 后端开发博客
    • AutoMapper是一个轻量级的类库,主要功能是把一个对象转换成另外一个对象,而避免我们每次都手工去转换。

      常见几种使用场景:

      • 对外服务接口,把逻辑层的实体转换成服务消费者需要的字段。
      • UI展现层,把业务对象转换成UI需要展现的字段。
      • 用户的输入输出,把DTO与领域模型互转。

      相信大家AutoMapper可以做什么已经有了一个基本的了解,下面主要针对AutoMapper在NetCoreWeb中的使用做一个了解。

      前置准备

      工作中一定要多复用别人造的成熟的轮子,这样可以加快自己的工作进度。当然我的意思也不是说只要会用,我们也要知道其中的原理,但这应该是自己工作之余应该学习的内容。工作讲究的是效率,又快又好是检验工作成果的标准。

      Nuget包下载

      写本文章时的版本 automapper为10.0.1 AutoMapper.Extensions.Microsoft.Dependeny为8.1.1

      项目集成

      1、ConfigureServices中注入服务

      services.AddAutoMapper(Assembly.Load("NetCoreWebAnalysis"));
      

      2、定义Dto对象

      工单

      public class Order
      {
      public int Id { get; set; }
      public string Name { get; set; }
      public string Desc { get; set; }
      public DateTime CreateTime { get; set; }
      }
      

      工单Dto

      public class OrderOutPut
      {
      public int Id { get; set; }
      public string Name { get; set; }
      public string Desc { get; set; }
      public string CreateYear { get; set; }
      public string CreateMonth { get; set; }
      public string CreateDay { get; set; }
      }
      

      3、配置映射关系

      public class OrderProfile : Profile
      {
      public OrderProfile()
      {
      CreateMap<Order, OrderOutPut>()
      .ForMember(des => des.CreateYear, source => source.MapFrom(i => i.CreateTime.Year))
      .ForMember(des => des.CreateMonth, source => source.MapFrom(i => i.CreateTime.Month))
      .ForMember(des => des.CreateDay, source => source.MapFrom(i => i.CreateTime.Day));
      }
      }
      

      4、执行映射方法测试

      [Route("mapper")]
      [ApiController]
      public class MapperController : Controller
      {
      private readonly IMapper _mapper;
      public MapperController(IMapper mapper)
      {
      _mapper = mapper;
      }
      [HttpGet("getmapper")]
      public OrderOutPut GetMapper()
      {
      var order = new Order()
      {
      Id = 1,
      Name = "工单1号",
      Desc = "工单描述内容",
      CreateTime = DateTime.Now
      };
      return _mapper.Map<OrderOutPut>(order);
      }
      }
      

      输出内容

      {
      "id": 1,
      "name": "工单1号",
      "desc": "工单描述内容",
      "createYear": "2021",
      "createMonth": "5",
      "createDay": "12"
      }
      

      参考

      AutoMapper.Extensions.Microsoft.DependencyInjection使用说明

      AutoMapper使用

      .net core 3.1 WebAPi 使用 AutoMapper 9.0、10.0

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

      ASP.NET Core3.1 AutoMapper组件

      请登录之后再进行评论

      登录

      手机阅读天地(APP)

      • 微信公众号
      • 微信小程序
      • 安卓APP
      手机浏览,惊喜多多
      匿名树洞,说我想说!
      问答悬赏,VIP可见!
      密码可见,回复可见!
      即时聊天、群聊互动!
      宠物孵化,赠送礼物!
      动态像框,专属头衔!
      挑战/抽奖,金币送不停!
      赶紧体会下,不会让你失望!
    • 实时动态
    • 签到
    • 做任务
    • 发表内容
    • 偏好设置
    • 到底部
    • 帖子间隔 侧栏位置:
    • 还没有账号?点这里立即注册