Map<IDataReader, MyType>(sourceReader, destinationObject) 不更新 destinationObject
Map<IDataReader, MyType>(sourceReader, destinationObject) not updating destinationObject
在 DataReaderMapping 单元测试中,更改 Establish_context 方法(Mapper.Map 行)
protected override void Establish_context()
{
Mapper.CreateMap<IDataRecord, DTOObject>()
.ForMember(dest => dest.Else, options => options.MapFrom(src => src.GetDateTime(src.GetOrdinal(FieldName.Something))));
_dataRecord = new DataBuilder().BuildDataRecord();
var result = new DTOObject();
Mapper.Map<IDataRecord, DTOObject>(_dataRecord, result);
_result = result;
}
我已将其追溯到 DataReaderMapper.cs 中的 MapPropertyValues 方法。
除了在单元测试的 ForMember 扩展中定义的 'Else' 之外,context.TypeMap.GetPropertyMaps() 没有任何属性的 属性 映射。
我尝试使用 ForAllMembers 'trick' 属性 映射来添加缺少的属性,但是这些 属性 映射没有 _sourceValueResolvers。
关于如何解决的建议?
DataReaderMapper.CreateBuilder 中发出的 IL 总是创建一个新对象,而不是可能在 ResolutionContext 中使用 DestinationValue。
AutoMapper 的拉取请求
https://github.com/AutoMapper/AutoMapper/pull/721/files
在 DataReaderMapping 单元测试中,更改 Establish_context 方法(Mapper.Map 行)
protected override void Establish_context()
{
Mapper.CreateMap<IDataRecord, DTOObject>()
.ForMember(dest => dest.Else, options => options.MapFrom(src => src.GetDateTime(src.GetOrdinal(FieldName.Something))));
_dataRecord = new DataBuilder().BuildDataRecord();
var result = new DTOObject();
Mapper.Map<IDataRecord, DTOObject>(_dataRecord, result);
_result = result;
}
我已将其追溯到 DataReaderMapper.cs 中的 MapPropertyValues 方法。
除了在单元测试的 ForMember 扩展中定义的 'Else' 之外,context.TypeMap.GetPropertyMaps() 没有任何属性的 属性 映射。
我尝试使用 ForAllMembers 'trick' 属性 映射来添加缺少的属性,但是这些 属性 映射没有 _sourceValueResolvers。
关于如何解决的建议?
DataReaderMapper.CreateBuilder 中发出的 IL 总是创建一个新对象,而不是可能在 ResolutionContext 中使用 DestinationValue。
AutoMapper 的拉取请求 https://github.com/AutoMapper/AutoMapper/pull/721/files