有了AutoMapper,就再也不用进行手工一对一的从IDataReader到实体字段的赋值。这篇博文是一个实际案例的记录。

实体类型定义如下:

public class UploadImage
{
public int Id { get; set; }
public string Src { get; set; }
}

Src属性在数据库中对应的字段名为ImageUrl。

映射要求:从IDataReader到IEnumerable<UploadImage>,代码如下:

using (var conn = new SqlConnection(ConnectionStrings.Default))
{
using (var command = conn.CreateCommand())
{
command.CommandType = System.Data.CommandType.Text;
command.CommandText = "...";
await conn.OpenAsync();
using (IDataReader reader = await command.ExecuteReaderAsync())
{
return AutoMapper.Mapper.Map<IDataReader, IEnumerable<UploadImage>>(reader);
}
}
}

通过 IMappingExpression.ForMember() 方法配置AutoMapper可以实现这个映射,代码如下:

AutoMapper.Mapper.CreateMap<IDataReader, UploadImage>()
.ForMember(dest => dest.Src, options => options.MapFrom(
src => src.GetString(src.GetOrdinal("ImageUrl"))));

【参考资料】

Mapping From IDataReader/IDataRecord with AutoMapper

AutoMapper指定列名进行映射的更多相关文章

  1. SQLServer获取临时表所有列名或是否存在指定列名的方法

    获取临时表中所有列名 select name from tempdb.dbo.syscolumns where id=object_id( '#TempTB') 判断临时表中是否存在指定列名 if c ...

  2. MFC:AfxLoadLibrary-将指定的 DLL 映射到调用进程的地址空间

    Visual Studio 2012 - Visual C++ LoadLibrary 和 AfxLoadLibrary 进程调用 LoadLibrary (或 AfxLoadLibrary) 以显式 ...

  3. NetCore+AutoMapper多个对象映射到一个Dto对象

    目录 一. 定义源映射类和被映射类DTO二.注入AutoMapper三.配置映射四.写测试 一.定义源映射对象 为了体现AutoMapper映射特性,在SocialAttribute中的Name属性没 ...

  4. Django学习路10_创建一个新的数据库,指定列名并修改表名

    在 models.py 中添加 from django.db import models # Create your models here. class Person(models.Model): ...

  5. 使用AutoMapper进行对象间映射

    在开发过程中,难免遇到下面这种情况:两个(或多个)对象所拥有的大多数属性是重复的,我们需要在对象间进行映射(即将一个对象的属性值赋给另一个对象.通常我们可以进行如下操作: A a=new A(); a ...

  6. AutoMapper搬运工之自定义映射

    回顾 上节说到了AutoMapper的简单使用,对于复杂的Mapping需要强大的自定义,这节我们来看下AutoMapper的自定义Mapping(Projection) 搬运自Git:https:/ ...

  7. AutoMapper 创建嵌套对象映射(原创)

    之前在做DTO转换时,用到AutoMapper.但DTO的层次太深了,无奈官方没针对嵌套类型提供好的解决方案,于是自己实现了一下: 思路:采用递归和反射很好的避免手工创建嵌套对象的映射. 第一个版本, ...

  8. 【来龙去脉系列】AutoMapper一款自动映射框架

    前言 通常在一个应用程序中,我们开发人员会在两个不同的类型对象之间传输数据,通常我们会用DTOs(数据传输对象),View Models(视图模型),或者直接是一些从一个service或者Web AP ...

  9. Java注解(Annotation)用法:利用注解和反射机制指定列名导出数据库数据

    闲来没事,想了一个应用的例子:用java如何把数据库的数据根据我们指定的某几列,如第2列,第4列,第6列导出来到Excel里? 写代码也是为了应用的,写好的代码更重要的是在于思考.我自己思考了这个示例 ...

随机推荐

  1. ftp服务器远程拷贝命令

    xiamense@xiamense-testserver:~$ ftp 218.5.82.40 输入账户密码 get 远程文件路径 本机服务器路径get pa20160927.xml /home/xi ...

  2. js生成二维码实例(真实有效)

    js文件  qrcode.js   代码 /*from tccdn minify at 2014-6-4 14:59:43,file:/cn/c/c/qrcode.js*/ /** * @fileov ...

  3. SQL Server开启READ_COMMITTED_SNAPSHOT

    --查询数据库状态 select name,user_access,user_access_desc,     snapshot_isolation_state,snapshot_isolation_ ...

  4. jqeury 合并单元格

    function mergeCells() { var tbodyTlth = $("#datatable_ajax1 tbody").find("tr").l ...

  5. SQL SERVER连接、合并查询

    ----创建测试表MyStudentInfoCREATE table MyStudentInfo(  Id int not null primary key,  Name varchar(16),  ...

  6. Linux内核模块简介

    一. 摘要 这篇文章主要介绍了Linux内核模块的相关概念,以及简单的模块开发过程.主要从模块开发中的常用指令.内核模块程序的结构.模块使用计数以及模块的编译等角度对内核模块进行介绍.在Linux系统 ...

  7. openssl命令用法

    openssl命令 配置文件:/etc/pki/tls/openssl.cnf 命令格式: openssl command [ command_opts ] [ command_args ] 众多子命 ...

  8. 用Python玩转词云

    第一步:引入相关的库包: #coding:utf-8 __author__ = 'Administrator' import jieba #分词包 import numpy #numpy计算包 imp ...

  9. android及IOS的测试中容易疏漏或者测漏的点——持续更新

    1.控件的生命周期——控件消隐之后,会不会依然可点,导致出现进一步的响应?这个之前没想过,之后需要加入到测试点中 2.在登录界面同时出现弹窗: 如:特殊情况下,同时出现弹窗,又刚好退出登录,因此登录界 ...

  10. js根据生日计算出年龄

    /*根据出生日期算出年龄*/ function jsGetAge(strBirthday){ var returnAge; var strBirthdayArr=strBirthday.split(& ...