asp.net core webapi------3.AutoMapper的使用
1.nuget 安装程序集

安装AutoMapper和AutoMapper.Extension.Microsoft.DependencyInjection
2.配置映射关系
新增类文件,在类里面配置映射关系
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中配置映射关系
builder.Services.AddAutoMapper(typeof(AutoMapperConfigs));
4.注入Mapper,map映射
本案例写在controller层,映射对象分别为SystemLog、SystemLogDto
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;//依赖注入AutoMapperprivate 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);}}
}
