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

【參考資料】

Mapping From IDataReader/IDataRecord with AutoMapper


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM