有了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. 【转】你真的理解Python中MRO算法吗?

    你真的理解Python中MRO算法吗? MRO(Method Resolution Order):方法解析顺序. Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多 ...

  2. 设置PATH变量

    一不小心把PATH变量清空了,所有的命令都执行不了了,提示“xxx: command not found”,解决办法:在命令行输入export PATH=/usr/local/sbin:/usr/lo ...

  3. MySQL Innodb的两种表空间方式

    要说表空间,MySQL的表空间管理远远说不上完善.换句话说,事实上MySQL根本没有真正意义上的表空间管理.MySQL的Innodb包含两种表空间文件模式,默认的共享表空间和每个表分离的独立表空间.只 ...

  4. nullcon HackIM 2016 -- Programming Question 2

    Your simple good Deeds can save you but your GREED can kill you. This has happened before. This gree ...

  5. [转]libsvm 训练后的模型参数讲解

    http://blog.sina.com.cn/s/blog_6646924501018fqc.html 主要就是讲解利用libsvm-mat工具箱建立分类(回归模型)后,得到的模型model里面参数 ...

  6. Python-内置类属性

    Python内置类属性 __dict__ : 类的属性(包含一个字典,由类的数据属性组成) __doc__ :类的文档字符串 __name__: 类名 __module__: 类定义所在的模块(类的全 ...

  7. spring中Bean的生命周期

    初始化方法:在Bean实例初始化后自动执行的方法 销毁方法:在Bean实例销毁前执行的方法 <bean id="bm" class="springTest.Car& ...

  8. Codeforces Round #383 _python作死系列

    A. Arpa's hard exam and Mehrdad's naive cheat 题意求1378的n次方的最后一位,懒的写循环节 瞎快速幂 py3 int和LL 合并为int了 def q_ ...

  9. mysql查询数据返回touple改为字典的方法

    conn = MySQLdb.connect(host='ip',user='root',passwd='123456',db="dbname",charset="utf ...

  10. Java学习笔记14--动态代理

    InvocationHandler接口 public interface InvocationHandler{ public Object invoke(Object proxy,Method met ...