c# AutoMapper

概要

可以自动的在类与类之间进行映射

引入包

AutoMapper.Extensions.Microsoft.DependencyInjection

 public class BlogNews:BaseId
  {
    //nvarchar带中文比较好
    [SugarColumn(ColumnDataType ="nvarchar(30)")]
    public string Title { get; set; }
    [SugarColumn(ColumnDataType ="text")]
    public string Content { get; set; }
    public DateTime Time { get; set; }
    public int BrowseCount { get; set; }
    public int LikeCount { get; set; }

    public int TypeId { get; set; }
    public int WriterId { get; set; }
    /// <summary>
    /// 类型,不映射到数据库
    /// </summary>
    [SugarColumn(IsIgnore =true)]
    public TypeInfo TypeInfo { get; set; }

    [SugarColumn(IsIgnore = true)]
    public WriterInfo WriterInfo { get; set; }
  }

 public class BlogNewsDTO
  {
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public DateTime Time { get; set; }
    public int BrowseCount { get; set; }
    public int LikeCount { get; set; }
    public int TypeId { get; set; }
    public int WriterId { get; set; }
    public string TypeName { get; set; }
    public string WriterName { get; set; }
  }

映射类的设置



    public class CustomAutoMapperProfile : Profile
    {
        public CustomAutoMapperProfile()
        {
           //名字相同的属性会进行自动映射
             base.CreateMap<WriterInfo, WriterDTO>();
             base.CreateMap<BlogNews, BlogNewsDTO>()
           //将BlogNews.TypeInfo.Name映射到BlogNewsDTO.TypeName
                 .ForMember(dest => dest.TypeName, sourse => sourse.MapFrom(src => src.TypeInfo.Name))
           //将BlogNews.WriterInfo.Name映射到BlogNewsDTO.WriterName
                 .ForMember(dest => dest.WriterName, sourse => sourse.MapFrom(src => src.WriterInfo.Name));
        }
    }

配置中间件

builder.Services.AddAutoMapper(typeof(CustomAutoMapperProfile));

使用

        //获取Blognews数据实体
        var blognew = await _blogNewsService.QueryAsync(pages, size, total);
        //讲Blognews数据实体映射成BlogNewsDTO
        var blognewsDTO = mapper.Map<List<BlogNewsDTO>>(blognew);
此条目发表在Core分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注