文章出處

有了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


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()