Проблема в том, что Automapper также вызывает Read () - поэтому старается всегда смотреть на вторую запись. Если вы думаете об этом, если у вас есть 1000 строк в считывателе - как AutoMapper собирается преобразовать это в список, не просматривая их все, вызывая Read ()?
Измените свою линию, чтобы звонить в HasRows
, например
using (IDataReader dr = DatabaseContext.ExecuteReader(command))
{
if (dr.HasRows)
{
AutoMapper.Mapper.CreateMap<IDataReader, ProductModel>();
return AutoMapper.Mapper.Map<IDataReader, IList<ProductModel>>(dr);
}
return null;
}