zoukankan      html  css  js  c++  java
  • .net core中使用Automapper

    安装所需的包

    Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection

    配置AutoMapper

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
        services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
    }
    

    添加测试模型

    public class QueueInfo
    {
        public string Id { get; set; }
    
        public string QueueNumber { get; set; }
    
        public DateTime CreateTime { get; set; }
        
    }
    
    public class QueueInfoCreateDto
    {
        public string Id { get; set; }
    
        public string QueueNumber { get; set; }
    
        public DateTime CreateTime { get; set; }
    }
    

    创建用户自定义Profile进行映射配置

    public class QueueProfile:Profile
    {
       public QueueProfile()
        {
            CreateMap<QueueInfo, QueueInfoCreateDto>().ReverseMap();
        }
    }
    

    ReverseMap表示双向映射。具体还有很多相关的api,详情可以进行官网查看。

    进行测试

    public class ValuesController : ControllerBase
    {
        //注册IMapper
        private readonly IMapper _mapper;
        public ValuesController(IMapper mapper)
        {
            _mapper = mapper;
        }
        // GET api/values
        [HttpGet]
        public ActionResult<IEnumerable<string>> Get()
        {
            QueueInfo info = new QueueInfo
            {
                Id = Guid.NewGuid().ToString(),
                CreateTime = DateTime.Now,
                QueueNumber = "123456789"
            };
            var dto = _mapper.Map<QueueInfoCreateDto>(info);
            return Ok(dto);
        }
    }
    

    集合之间也可以进行映射。其他拓展请查看官网进行学习。

    Automapper还可以在命名上进行自动转换。

    例如

    public class QueueInfo
    {
        public string Id { get; set; }
    
        public string QueueNumber { get; set; }
    
        public DateTime CreateTime { get; set; }
        
        public QueueItem QueueItem { get; set; }
    }
    
    public class QueueItem
    {
        public string Id { get; set; }
    
        public string Name { get; set; }
    }
    
    public class QueueInfoCreateDto
    {
        public string Id { get; set; }
    
        public string QueueNumber { get; set; }
    
        public DateTime CreateTime { get; set; }
    
        /// <summary>
        /// 这里使用的是QueueInfo中的QueueItem对象下的Name。进行映射的时候会自动映射
        /// </summary>
        public string QueueItemName { get; set; }
    }
    
  • 相关阅读:
    kubernetes安装记录
    nginx ssl 客户端认证配置调研
    centos 6 docker 安装(通过yum)
    elk docker 部署实战
    react 技术栈项目轻量化方案调研
    service worker 实战
    记一次 node-fetch 使用时踩的坑
    那些年使用npm进行依赖管理所踩的坑
    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
    linux 环境变量设置错误导致 command not found
  • 原文地址:https://www.cnblogs.com/cqxhl/p/12993300.html
Copyright © 2011-2022 走看看