asp.net core webapi------3.AutoMapper的使用

1.nuget 安装程序集

安装AutoMapper和AutoMapper.Extension.Microsoft.DependencyInjection

2.配置映射关系

新增类文件,在类里面配置映射关系

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AutoMapper;
using Models;
using SmartFactoryCommon;

namespace SmartFactoryBusinessInterface
{
    public class AutoMapperConfigs : Profile
    {
        public AutoMapperConfigs()
        {
            CreateMap<SystemLog,SystemLogDto>().ReverseMap();
            CreateMap<PagingData<SystemLog>,PagingData<SystemLogDto>>().ReverseMap();
        }
    }
}

3.ioc配置映射关系生效

在Program.cs中配置映射关系

cs 复制代码
builder.Services.AddAutoMapper(typeof(AutoMapperConfigs));

4.注入Mapper,map映射

本案例写在controller层,映射对象分别为SystemLog、SystemLogDto

cs 复制代码
using System.Data.SqlClient;
using AutoMapper;
using log4net;
using Microsoft.AspNetCore.Mvc;
using Models;
using SmartFactoryBusinessInterface;
using SmartFactoryCommon;
using SqlSugar;

namespace SmartFactoryApi.Controllers
{
    /// <summary>
    /// 框架默认的控制器
    /// </summary>

    [ApiController]
    [Route("[controller]")]
    public class LogController : ControllerBase
    {
        private readonly ILogger<LogController> _logger;
        private readonly ISqlSugarClient _IsqlSugarClient;
        private readonly IBaseServices _baseServices;
        //依赖注入AutoMapper
        private readonly IMapper _Imapper;
        //构造函数注入
        public LogController(ILogger<LogController> logger,ISqlSugarClient IsqlSugarClient,IBaseServices baseServices, IMapper imapper)
        {
            _logger = logger;
            _IsqlSugarClient = IsqlSugarClient;
            _baseServices = baseServices;
            _Imapper = imapper;
        }

        /// <summary>
        /// 日志分页查询
        /// </summary>
        /// <param name="pageindex">当前第几页</param>
        /// <param name="pagesize">每页几行数据</param>
        /// <returns></returns>
        [HttpGet("{pageindex:int}/{pagesize:int}")]
        public IActionResult logPage(int pageindex, int pagesize)
        {
            _logger.LogInformation($"logPage开始执行。。。。 时间:{DateTime.Now}");
            int totalCount = 0;
            // 业务逻辑
            //List<SystemLog> page = _sqlSugarClient.Queryable<SystemLog>().ToPageList(pageindex, pagesize,ref totalCount);

            PagingData<SystemLog> page = _baseServices.QueryPage<SystemLog>
                (c=>true,pagesize,pageindex,s=>s.Id,true);
            //_Imapper.Map方法做映射,将PagingData<SystemLog>转换为PagingData<SystemLogDto>>对象
            PagingData<SystemLogDto> pageDto = _Imapper.Map<PagingData<SystemLog>, PagingData<SystemLogDto>>(page);
            
            return new JsonResult(pageDto);
        }
    }
}
相关推荐
武藤一雄4 小时前
C# 竟态条件
microsoft·c#·.net·.netcore
FL16238631295 小时前
基于C#winform部署RealESRGAN的onnx模型实现超分辨率图片无损放大模糊图片变清晰
开发语言·c#
武藤一雄6 小时前
WPF深度解析Behavior
windows·c#·.net·wpf·.netcore
蓝天星空6 小时前
C#中for循环和foreach循环的区别
开发语言·c#
Maybe_ch7 小时前
WPF的STA线程模型、APM与TAP:从线程约束到现代异步
c#·.net·wpf
我是唐青枫8 小时前
C#.NET Consul + Steeltoe 深入解析:服务注册发现、健康检查与微服务接入
c#·.net·consul
不超限8 小时前
.net core项目部署至信创环境
.netcore
程序0078 小时前
在线五子棋小游戏(.NET Core+FreeSql+WebSocket ) html+js
websocket·html·.netcore
波波0078 小时前
用微软AutoGen+ 通义千问实现 AI 成语接龙
人工智能·microsoft·c#
csdn_aspnet19 小时前
C# 求n边凸多边形的对角线数量(Find number of diagonals in n sided convex polygon)
开发语言·算法·c#