zoukankan      html  css  js  c++  java
  • AutoMapper使用笔记

    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。

  • 相关阅读:
    多表查询
    mysql记录的增删改和单表查询
    作业45
    修改表 复制表
    多表关联
    约束
    关于服务器raid的一个记录
    安装linux操作系统--浪潮服务器
    关于python中的__new__方法
    关于类的总结之二
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/3554973.html
Copyright © 2011-2022 走看看