从IDataReader映射时,是否可以将AutoMapper配置为从自定义列名读取?

roh*_*agg 5 .net c# automapper system.data valueinjecter

为映射配置的伪代码(如下)是不可能的,因为拉姆达只允许我们访问类型的IDataReader,wheras在实际测绘,AutoMapper将达到到每一个每一个"细胞" IDataRecord,而IDataReader.Read() == true:

var mappingConfig = Mapper.CreateMap<IDataReader, IEnumerable<MyDTO>>();
mappingConfig.ForMember(
    destination => destination.???,
    options => options.MapFrom(source => source.???));
Run Code Online (Sandbox Code Playgroud)

任何人都可以想到在运行时使用AutoMapper配置或只是满足下面要求的其他动态方法的方法.

要求是支持任何IDataReader可能具有与属性名称不匹配的列名称的传入,MyDTO并且没有我可以依赖的命名约定.相反,我们会要求用户在运行时将预期的列名称与IDataReadervia中找到的实际列名称交叉引用IDataReader.GetSchemaTable().