ASP.NET Core(.Net 5)AutoMapper自动映射

  1. OOM
    Object-Object-Mapping实体间相互转换
  2. AutoMapper
    AutoMapper官方的解释:
    AutoMapper是一个对象-对象映射器。对象-对象映射通过将一种类型的输入对象转换为另一种类型的输出对象来工作。
    使AutoMapper变得有趣的是,它提供了一些有趣的约定,以免去搞清楚如何将类型A映射为类型B。只要类型B遵循AutoMapper既定的约定,就需要几乎零配置来映射两个类型。
    官网地址:https://docs.automapper.org/en/stable/Getting-started.html
其实就是AutoMapper帮助你无需手动的转换实体间关系

添加AutoMapper

引入NuGet包 AutoMapper.Extensions.Microsoft.DependencyInjection

注入AutoMapper的服务

AddAutoMapper 将会自动扫描程序集里所有包含映射关系的Profile文件

然后通过 AppDomain.CurrentDomain.GetAssemblies() automapper会加载到AppDomain中

在这里插入图片描述

实体

在这里插入图片描述
在这里插入图片描述

使用AutoMapper创建实体之间的关系,定义类继承 Profile

CreateMap<原对象,映射目标对象>;
.ReverseMap 相互转换映射

在这里插入图片描述

在Controller中使用AutoMapper并调用

在这里插入图片描述

集合时加List  _mapper.Map<List<目标对象>>(数据);

在这里插入图片描述

查看测试结果

在这里插入图片描述

其他方法

如果映射字段不一致
CreateMap<TouristRoute, TouristRouteDto>().ForMember(dest => dest.Price, opt => opt.MapFrom(src => src
                .OriginalPrice));
或者需要计算
CreateMap<TouristRoute, TouristRouteDto>().ForMember(dest => dest.Price, opt => opt.MapFrom(src => src
                .OriginalPrice * (decimal)(src.DiscountPresent ?? 1))).ReverseMap();
不想映射某个字段
 CreateMap<TouristRoute, TouristRouteDto>().ForMember(d=>d.Title,o=>o.Ignore());
 
字符串为空处理/替换
 CreateMap<TouristRoute,TouristRouteDto>().ForMember(d=>d.Title,o=>o.NullSubstitute("No data"));

条件映射
 CreateMap<TouristRoute,TouristRouteDto>().ForMember(d=>d.Title,o=>o.Condition(l=>!string.IsNullOrWhiteSpace(l.Title)));

前提条件映射(相比条件映射 运行更快,并且先调用条件,后分配值,还可以对操作值[Split...])
 CreateMap<TouristRoute,TouristRouteDto>().ForMember(d=>d.Title,o=>{o.PreCondition(l=>!string.isNullOrWhiteSpace(l.Title));o.MapFrom(l=>l.Title)})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值