首页 > 代码库 > AutoMapper指定列名进行映射

AutoMapper指定列名进行映射

有了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"))));

 

AutoMapper指定列名进行映射