首页 > 编程语言 >ASP.NET8 中使用 AutoMapper 配置

ASP.NET8 中使用 AutoMapper 配置

时间:2024-08-27 18:47:28浏览次数:12  
标签:ASP wrapper State Value NET8 AutoMapper query page

ASP.NET8 中使用 AutoMapper 配置

菜鸟新人学习 .NET 记录,找到了个类似 Springboot 框架中的 Mapstruct 的工具,就是配置资料不是很多,踩了蛮多坑的。

假设现在有一个USER类,我想将它转换成USERVO把其中的 pwd 字段給隐藏掉,通过 AutoMapper 可以不用每个字段赋值创建对象这样子,直接上流程看看。

  1. 先创建对应类去继承 Profile,这里如果字段名称不同亦可以指定字段配置,有空再补上自定义的内容
/*
 * @Author: Jun
 * @Description:
 */

using AutoMapper;
using WebApplication1.Entity;
using WebApplication1.Vo;

namespace WebApplication1.Utils;

public class MappingProfile : Profile
{
    public MappingProfile()
    {	
        // 左边是资源,右边是目标,加上Reverse就是反过来也可以,省了一行代码
        // 如果想整个List<User> -> List<UserPageVo>也是样写,研究了半天
        CreateMap<User, UserPageVo>().ReverseMap();
    }
}
  1. Program 中注入 AutoMapper
builder.Services.AddAutoMapper(typeof(MappingProfile));
  1. 在逻辑层就可以编写代码了,ok大功告成
public async Task<ActionResult<PaginatedResponse<UserPageVo>>> QueryUserPage(QueryUserPage query)
    {
        var totalCount = await _info.User.CountAsync();
        var page = new PageParam(query.PageNo.Value, query.PageSize.Value, totalCount);
        var wrapper = _info.User.AsQueryable();
        if (!string.IsNullOrEmpty(query.Username))
        {
            wrapper.Where(e => e.Username.Contains(query.Username));
        }
        if (query.State != null)
        {
            wrapper.Where(e => e.State == query.State);
        }
        
        if (query.Permission !=null)
        {
            wrapper.Where(e => e.Permission == query.State);
        }

        List<User> listAsync = await wrapper.Skip((page.PageNo.Value - 1) * page.PageSize.Value).Take(page.PageSize.Value).OrderBy(e => e.CreateTime).ToListAsync();
        List<UserPageVo> result = _mapper.Map<List<UserPageVo>>(listAsync);
        return new PaginatedResponse<UserPageVo>(result, page);
    }

标签:ASP,wrapper,State,Value,NET8,AutoMapper,query,page
From: https://www.cnblogs.com/junun/p/18383319

相关文章

  • ASP.Net8 中使用 JWT 鉴权的异常处理
    .Net8中使用JWT鉴权的异常处理自己搭了个学习Demo想用JWT給后端做鉴权,结果一直报一些奇奇怪怪的异常,最主要是和写业务代码不一样,因为用了官方提供的包很难排查出问题所在,这次有点像以前学Spring的时候,也是一点一点摸着石头过河,最后还是同事帮忙看出来问题在哪的。问题1:I......
  • C#面:解释ASP.NET MVC中的打包压缩
    在ASP.NET MVC(Model-View-Controller)架构中,打包压缩是指将前端资源文件(如CSS、JavaScript文件)进行合并和压缩,以减少网络传输的数据量,提高网页加载速度的一种技术。打包压缩的主要目的:减少HTTP请求的次数和文件大小在传统的Web开发中,每个页面通常会引用多个CSS和JavaScript......
  • C#/asp.net-智能制造业ERP系统-89973(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    C#(asp.net)智能制造业ERP系统摘 要随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用C#技术建设智能制造业ERP系统。本设计主要实现集人性化、高效率......
  • Asp .Net Core 学习笔记
    Startup类ConfigureServices方法注册服务,并通过依赖注入(DI)或者ApplicationServices在整个应用中使用服务使用IServiceCollection的各种Add{Service}进行注册,例如,AddDbContext、AddDefault、AddEntityFrameworkStores和AddPages在Configure方法配置应用服务之前,由主机......
  • 使用Jaspyt对配置文件密码保护
    1、添加依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version></dependency>......
  • .net8 的webapi部署到华为云的操作
    首先还是打包到文件夹:我的服务器是X64的centos8系统,所以我的配置如图: 发布后,我没有用它的dockerfile,而是用的docker-compose去编写的docker脚本,如下:services:ticket_manager_Api:#服务名称container_name:ticket_manager_Api#容器名称hostname:ticke......
  • ASP: Response 对象 错误 'ASP 0251 : 80004005' 解决办法
    ASP:Response对象错误'ASP0251:80004005'解决办法 Response对象错误'ASP0251:80004005'超过响应缓冲区限制 这种情况一般是因为需要输出的网页内容太大了,由于asp在输入内容到客户的浏览器上之前,会把需要输出的全部内容先输出到缓存区,这个缓存区一般默认大小......
  • .Net8 部署到IIS 10 上需要注意的点
    现在大部分项目都上云了,而且是linux的系统,这部分我下一篇再讲,这次讲一下如何部署到iis10,首先项目点击发布-》目标框架.net8部署模式是独立,目标运行时是win-x64,你也可以选择部署模式为依赖框架,目标运行时选择可移植,但是这样的话要注意IIS的应用程序池选择启用32位应用程序,如果是......
  • FreeScheduler 在asp.net core 中使用依赖注入的方式进行注入使用
    1.创建SchedulerTask.cs类,代码如下publicclassSchedulerTask{privatereadonlyILogger<SchedulerTask>_logger;privatereadonlyIServiceScopeFactory_serviceScopeFactory;publicSchedulerTask(ILogger<SchedulerTask>logger,IServiceSc......
  • ASP.NET Core 6.0 ServiceCollection 实现依赖注入
    ASP.NETCore6lOC容器控制反转(InversionofControl,IoC)是一种软件设计模式,其目的是降低代码之间的耦合度。在C#中,可以使用依赖注入(DependencyInjection,DI)来实现控制反转。一般系统分为UI层、BLL层、DAL层、IBLL层和IDAL层,IOC实质是通过抽象IBLL(接口、抽象类......