目录
概要
可以自动的在类与类之间进行映射
引入包
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);