zoukankan      html  css  js  c++  java
  • .netcore3.1——应用AutoMapper

    多层架构中存在多种模型,如视图模型ViewModel,数据传输对你DTO,ORM对象等,这些数据在层与层之间进行传输必须涉及类型之间的转换。

    AutoMapper是一个对象-对象映射器,作用是通过设置好的映射规则把一个对象转化为另一个对象,避免每次都去手动写转换代码。

    AutoMapper仅是其中一种方式,现在类似的组件多的多,简单点的自己也可以写,用顺手了哪家都OK。

    使用:

    1、Nuget引用:

    2、ConfigureServices中进行服务注册(程序集方式):

    1 //添加AutoMapper
    2             services.AddAutoMapper(typeof(StartupHelp.MapperProfiles).Assembly);

    StartupHelp.MapperProfiles就是要注册的类型所在程序集

    3、配置映射规则:

    1     public class MapperProfiles : AutoMapper.Profile
    2     {
    3         public MapperProfiles()
    4         {
    5             CreateMap<Manager, ManagerModel>().ReverseMap();
    6         }
    7     }

    这里是最简单的映射规则,还可以针对属性不匹配或者其他情况进行映射规则处理

    4、使用:

     1     public class ManagerService : IManagerService
     2     {
     3         private readonly IManagerRepository _repository;
     4         private readonly IMapper _mapper;
     5 
     6         public ManagerService(IManagerRepository repository, IMapper mapper)
     7         {
     8             this._repository = repository;
     9             this._mapper = mapper;
    10         }
    11 
    12         public async Task<ManagerModel> GetManagerAsync(string username)
    13         {
    14             var obj = await _repository.GetManager(username);
    15             return _mapper.Map<ManagerModel>(obj);
    16         }
    17     }

    这里用到了构造函数注入,_mapper.Map<ManagerModel>(obj); 一句话即可实现对象之间的转换。

    官方Github地址:https://github.com/AutoMapper/AutoMapper

    官方文档(英文):https://automapper.readthedocs.io/en/latest/Getting-started.html

  • 相关阅读:
    sql日期操作
    用户活跃状态模型
    R基于Bayes理论实现中文人员特性的性别判定
    python的一点小常识
    [工作技能]SVN
    北大计算所词性标注集简表
    c++ boost 汉字和模式串混用的例子
    SVN文本文件报二进制属性的问题
    我的R代码备份
    FaceBook Twitter实习生简历求内推
  • 原文地址:https://www.cnblogs.com/quluqi/p/12719643.html
Copyright © 2011-2022 走看看