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);
        }
    }
}
相关推荐
Yorlen_Zhang1 小时前
Python Tkinter Text 控件完全指南:从基础编辑器到富文本应用
开发语言·python·c#
不绝1911 小时前
C#进阶:预处理指令/反射,Gettype,Typeof/关键类
开发语言·c#
大鹏说大话1 小时前
告别 MSBuild 脚本混乱:用 C# 和 Nuke 构建清晰、可维护的现代化构建系统
开发语言·c#
czhc11400756633 小时前
通信 28
c#
bugcome_com6 小时前
C# 程序结构详解:从 Hello World 开始
c#
唐梓航-求职中7 小时前
编程-技术-算法-leetcode-288. 单词的唯一缩写
算法·leetcode·c#
bugcome_com9 小时前
阿里云 OSS C# SDK 使用实践与参数详解
阿里云·c#
大尚来也9 小时前
双库协同,各取所长:.NET Core 中 PostgreSQL 与 SQLite 的优雅融合实战
postgresql·sqlite·.netcore
懒人咖19 小时前
缺料分析时携带用料清单的二开字段
c#·金蝶云星空
bugcome_com20 小时前
深入了解 C# 编程环境及其开发工具
c#