以下是代码:
Mapper.CreateMap<IDataReader, IEnumerable<Order>>();
orders = Mapper.Map<IDataReader, IEnumerable<Order>>(reader)
结果是DTO的公共属性都为null。阅读器中有一列名称和数据类型匹配。名称的大小并不精确,但AutoMapper有代码来处理它。
var propertyInfo = destinationType.GetProperty(dataRecord.GetName(i), BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance);
不幸的是,似乎AutoMapper从未遇到过这行代码。通过从构建器缓存中找到构建器的缓存副本,可以提前停止它。
Build builder;
BuilderKey builderKey = new BuilderKey(destinationType, dataRecord);
if (_builderCache.TryGetValue(builderKey, out builder))
{
return builder;
}
它是如何进入构建器缓存的?神秘......帮助!