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 小时前
Pulsar 消息同步机制
c#·linq
海盗12344 小时前
微软技术周报——2026-07-22
microsoft·c#·.net
海盗12344 小时前
微软技术日报 ——2026-07-21
microsoft·c#·.net
-银雾鸢尾-4 小时前
C#中的泛型约束
开发语言·c#
WWJA王文举4 小时前
单片机参数如何掉电保存:Flash、EEPROM和配置存储完整设计
数据库·stm32·mongodb·c#
czhc11400756636 小时前
722:零侵入;DBG;
c#
-银雾鸢尾-15 小时前
C#中的StringBuilder相关方法
开发语言·c#
-银雾鸢尾-15 小时前
C#中结构体与类的区别;抽象类与接口的区别
开发语言·c#
心平气和量大福大19 小时前
C#-WPF-Window主窗体
开发语言·c#·wpf
白露与泡影19 小时前
Arthas 实战指南:从方法耗时定位到 JVM 变量热修改
服务器·jvm·c#