Skip to content

[TOC]

目的

减少以下的重复操作

C
    [HttpPost]
    public IActionResult Add(UserDto UserDto)
    { 
        Users user = new Users();
        user.Id = UserDto.Id;
        user.Name = UserDto.Name; 
        user.Password = UserDto.Password;
        user.Phone = UserDto.Phone;
        user.Gender = UserDto.Gender;
        user.DepartmentId = UserDto.DepartmentId;
        user.CreateId = GetUserID();
        DbContext.Set<Users>().Add(user);
        DbContext.SaveChanges();
        return Ok("完成输入!");
    }

操作

1.安装 AutoMapper.Extensions.Microsoft.DependencyInjection

注意最新版本

2.写配置类

以下例子为目的

C
    /// <summary>
    /// 用来省略同名赋值的
    /// </summary>
    public class MappingProfile : Profile
    {
        public MappingProfile()
        {
            // 将 UserDto 映射到 Users, 将 UserDto 变成 Users, 
            CreateMap<UserDto, Users>();

            // 如果需要反向映射(实体→DTO)
            // CreateMap<Users, UserDto>(); 
            // 如果属性名不一致,可以手动配置,交叉
            // CreateMap<UserDto, Users>()
            //     .ForMember(dest => dest.FullName, opt => opt.MapFrom(src => src.Name))
            //     .ForMember(dest => dest.Id, opt => opt.Ignore()); // 忽略自增ID
        }
    }

3.使用

C

// 将 UserDto 映射到 Users, 将 UserDto 变成 Users, 
    var user = mapper.Map<Users>(userDto);   // 自动映射所有同名属性