AutoMapper

一、AutoMapper

1、概述

AutoMapper是一个.NET库,用于简化对象之间的映射。它可以帮助开发人员在不同类型之间进行自动转换,从而减少重复的手动映射代码。

使用AutoMapper,开发人员可以定义映射规则,然后该库会自动执行对象之间的映射。这使得在应用程序中对数据进行转换和映射变得更加简单和高效。
 

下面是AutoMapper的一些常见功能:

对象到对象的映射:简化了从一个对象类型到另一个对象类型的转换。

集合的映射:可以自动映射集合中的对象,减少了手动迭代和映射的工作。

可配置的映射规则:开发人员可以定义自定义的映射规则,以满足特定的需求。

灵活的映射选项:AutoMapper提供了许多选项和配置,以满足各种映射需求。
 

2、基础应用

2.1、定义model和DTO

public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public DateTime CreatedDate { get; set; }

        public string Flag { get; set; }
    }

//Id->StudentId ,DateTime->string, Flag 没有了
public class StudentDto
    {
        public int StudentId { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
        public string CreatedDate { get; set; }

        
    }

2.2、nuget包AutoMapper,AutoMapper.Extensions.Microsoft.DependencyInjection

并自定义配置类,继承Profile

public class AutoMapperTest:Profile
    {
        public AutoMapperTest()
        {
            //Student和StudentDto映射
            CreateMap<Student, StudentDto>()
                .ForMember(dest => dest.StudentId, opt => opt.MapFrom(src=>src.Id))//将不同的两个名字映射
                .ForMember(dest => dest.CreatedDate, opt => opt.MapFrom(src => src.CreatedDate.ToString()))//将datetime类型转成字符串
                .ReverseMap();// ReverseMap表示双向映射

        }
    }

2.3、program.cs

//添加automapper
builder.Services.AddAutoMapper(typeof(AutoMapperTest));

2.4、测试

[Route("api/[controller]")]
    [ApiController]
    public class AutomapperTestController : ControllerBase
    {
        private readonly IMapper _mapper;
        public AutomapperTestController(IMapper mapper)
        {
            _mapper = mapper;
        }

        [HttpPost]
        public Student Method1(StudentDto studentDto)
        {
            Student student = _mapper.Map<Student>(studentDto);
            return student;
        }
    }

2.5、结果

请求体

响应体

这样,前端传的值就会经过转换映射到model

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值