1

说我有:

var dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Data Guid", typeof(Guid));
dt.Rows.Add(10, "Jonesy", Guid.NewGuid());

Poco我知道我可以使用 AutoMapper 将其映射到我的自定义类:

public class Poco
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Guid DataGuid { get; set; }
}  

var pocos = AutoMapper.Mapper.DynamicMap<IDataReader, List<Poco>>(dt.CreateDataReader());

但是,我命名Data Guid的列未正确映射,因为名称中有空格。有什么办法可以告诉 AutoMapper 在映射之前删除列名中的空格?

我研究了一个自定义类型转换器并使用了 BeforeMap 扩展。但是我无法更改架构。这可能吗?

只是为了涵盖我的所有基础,这是一个更大的项目,其数据来自我无法操纵的来源。

4

1 回答 1

1

像这样为您的成员定义属性映射:

AutoMapper.Mapper.CreateMap<IDataRecord, Poco>()
    .ForMember(x => x.DataGuid, o => o.MapFrom(
        s => s.GetGuid(s.GetOrdinal("Data Guid"))));

然后像这样调用 Automapper:

var pocos = AutoMapper.Mapper.Map<List<Poco>>(dt.CreateDataReader());

DynamicMap更适合使用匿名(动态)类型时。

于 2015-05-06T01:08:40.497 回答