• AutoMapper使用笔记


    AutoMapper是一个.NET的对象映射工具。

    项目地址:https://github.com/AutoMapper/AutoMapper

    帮助文档:https://github.com/AutoMapper/AutoMapper/wiki

    主要用途

    领域对象与DTO之间的转换、数据库查询结果映射至实体对象。

    使用笔记

    场景1:源类型BlogEntry,目标类型BlogPostDto,指定属性进行映射(BlogEntry.ID对应于BlogPostDto.PostId)。

    代码:

    AutoMapper.Mapper.CreateMap<BlogEntry, BlogPostDto>()
    .ForMember(dto => dto.PostId, opt => opt.MapFrom(entity => entity.ID));


    场景2:IDataReader映射至实体类

    代码:

    复制代码
    using (IDataReader reader = _db.ExecuteReader(command))
    {
    if (reader.Read())
    {
    return AutoMapper.Mapper.DynamicMap<BlogConfig>(reader);
    }
    }
    复制代码

    场景3:列表类型之间的映射,比如:源类型List<BlogSite>,目标类型List<BlogSiteDto>

    代码如下:

    AutoMapper.Mapper.CreateMap<BlogSite, BlogSiteDto>();
    var blogSiteDto = AutoMapper.Mapper.Map<List<BlogSite>, List<BlogSiteDto>>(blogSite);

    注:必须要先通过CreateMap建立BlogSite与BlogSiteDto的映射关系。

    场景4:在映射时为目标实例的属性指定值

    代码如下:

    var blogSiteDto = new BlogSiteDto();
    AutoMapper.Mapper.CreateMap<BlogEntry, BlogPostDto>()
    .ForMember(dto => dto.BlogSiteDto, opt => opt.UseValue(blogSiteDto));

    注:BlogSiteDto是BlogPostDto的一个属性。

    补充:

    AutoMapper的配置(比如AutoMapper.Mapper.CreateMap<BlogSite, BlogSiteDto>();)建议放在程序启动时,比如Global.asax的Application_Start, BootStrapper。

  • 相关阅读:
    并查集
    CCF201604-02
    作业八
    作业七
    数据结构--链队列基本操作
    数据结构--栈的基本操作
    eclipse配置maven
    软件架构
    scala lambda 表达式 & spark RDD函数操作
    spark(3)
  • 原文地址:https://www.cnblogs.com/ExMan/p/4538567.html
Copyright © 2020-2023  润新知