.NET CORE 中用AutoMapper将实体转Dto-阿里云开发者社区

开发者社区> 云计算> 正文

.NET CORE 中用AutoMapper将实体转Dto

简介: 在开发过程中,经常会碰到数据实体对象(Entity)和数据传输对象(Dto)的转换,手写代码太烦太LOW,可以用 AutoMapper 按规则自动转换。

在开发过程中,经常会碰到数据实体对象(Entity)和数据传输对象(Dto)的转换,手写代码太烦太LOW,可以用 AutoMapper 按规则自动转换。


1、安装两个依赖包,通过Nuget安装


AutoMapper 
AutoMapper.Extensions.Microsoft.DependencyInjection //startup 中 services.AddAutoMapper(); 需要依赖此包。



2、在Startup中添加AutoMapper


public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
//添加对AutoMapper的支持,会查找所有程序集中继承了 Profile 的类
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

}




3、创建AutoMapper映射规则,继承 Profile


public class AutoMapperConfigs: Profile
{
    //添加你的实体映射关系.
    public AutoMapperConfigs()
    {
        //UserEntity转UserDto.
        CreateMap<UserEntity, UserDto>()
            //映射发生之前
            .BeforeMap((source,dto) => {
                //可以较为精确的控制输出数据格式
                dto.CreateTime = Convert.ToDateTime(source.CreateTime).ToString("yyyy-MM-dd");
            })
            //映射发生之后
            .AfterMap((source, dto) => {
                //code ...
            });

        //UserDto转UserEntity.
        CreateMap<UserDto, UserEntity>();
    }

}




4、在Controller构造函数中注入IMapper,然后在方法中使用


public class UserController : Controller
{
 private readonly IMapper _mapper;
 public UserController(IMapper mapper)
 {
     _mapper = mapper;
 }

 [HttpGet]
 public JsonResult Get(int id=1)
 {
     //模拟数据
     var user = new UserEntity() { Id = id, UserName = "UserA" };
     //实体对象转Dto对象
     var userDto = _mapper.Map<UserDto>(user);
     return new JsonResult(userDto);
 }

 [HttpGet]
 public JsonResult Get()
 {
     //模拟数据
     var users = new List<UserEntity>();
     for (int i=0;i<5;i++)
     {
         users.Add( new UserEntity() { Id = i, UserName = $"User{i}" });
     }
     
     //实体对象集合转Dto对象集合
     var userDtos = _mapper.Map<List<UserDto>>(usesr);
     return new JsonResult(userDtos);
 }
 

}



云服务器ECS地址:阿里云·云小站

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章