ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.NetCore+Mapster对象映射

2022-01-28 18:01:53  阅读:344  来源: 互联网

标签:mapper Name 映射 NetCore output input Mapster Map public


一、依赖注入方式

 1.1 安装两个依赖包
<PackageReference Include="Mapster.DependencyInjection" Version="1.0.0" />
<PackageReference Include="Mapster" Version="7.2.0" />
    1.2 配置映射关系

    public class InitMapsterAdaptConifg
    {

        public TypeAdapterConfig InitMapperConfig()
        {
            TypeAdapterConfig config = new TypeAdapterConfig();
            config.ForType<School, SchoolDisplayDto>()
                .Map(s => s.SchoolId, d => d.Id)
                .Map(s => s.SchoolIdName, d => d.Id + d.Name)
                .Map(d => d.SchoolName, s => s.Name)
                .IgnoreNullValues(true);

            return config;
        }
    }
    1.3 Startup 中注入服务 TypeAdapterConfig 必须Singleton 单例注入

     public void ConfigureServices(IServiceCollection services)
        {
            services.AddSingleton(new InitMapsterAdaptConifg().InitMapperConfig());
            services.AddScoped<IMapper, ServiceMapper>();
        }    
        1.4 在服务中注入 调用

        private readonly IMapper _mapper;
        public SchoolAppService(ISqlSugarClient context = null, IMapper mapper = null) : base(context)
        {
            base.Context = context;
            _mapper = mapper;
        }   

        public async Task<PagedOutput<SchoolDisplayDto>> GetSchoolPage(SchoolPagedInput input)
        {
            PagedOutput<SchoolDisplayDto> output = new PagedOutput<SchoolDisplayDto>();

            RefAsync<int> total = 0;
            var query = Context.Queryable<School>()
                .WhereIF(!string.IsNullOrWhiteSpace(input.Name), x => x.Name.Contains(input.Name));
            output.TotalCount = await query.CountAsync();
            var scList = await query
                .OrderBy(x => x.Id, OrderByType.Desc)
                .ToPageListAsync(input.PageIndex, input.PageSize, total);
            output.TotalCount = total.Value;
            output.Data = _mapper.Map<IEnumerable<School>, IEnumerable<SchoolDisplayDto>>(scList);
            return output;

        }

 

标签:mapper,Name,映射,NetCore,output,input,Mapster,Map,public
来源: https://www.cnblogs.com/ABC-wangyuhan/p/15853442.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有