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);
        }
    }
}
相关推荐
自由的好好干活1 天前
使用Qoder编写ztdaq的C#跨平台示例总结
linux·windows·c#·qoder
FuckPatience1 天前
C# 实现元素索引由1开始的链表
开发语言·链表·c#
我是唐青枫1 天前
C#.NET 范围与索引(Range、Index)完全解析:语法、用法与最佳实践
c#·.net
烛阴1 天前
从`new()`到`.DoSomething()`:一篇讲透C#方法与构造函数的终极指南
前端·c#
深海潜水员1 天前
【MonoGame游戏开发】| 牧场物语实现 第一卷 : 农场基础实现 (下)
vscode·游戏·c#·.net·monogame
合作小小程序员小小店1 天前
图书管理系统,基于winform+sql sever,开发语言c#,数据库mysql
开发语言·数据库·sql·microsoft·c#
大侠课堂2 天前
C#经典面试题100道
开发语言·c#
时光追逐者2 天前
Visual Studio 2026 现已正式发布,更快、更智能!
ide·c#·.net·visual studio
周杰伦fans2 天前
C# 正则表达式完全指南
mysql·正则表达式·c#
Triumph++2 天前
电器模C#汇控电子继块驱动(Modbus协议)
c#·visual studio·c#串口通信