2017-02-15 10 views
1

Я использую automapper v4.1.1 и automapper.data1.0.0.beta 1. У меня есть консольное приложение и мое отображение кода выглядит следующим образом:AutoMapper.Data ошибка при отображении

Mapper.Initialize(cfg => { 
      MapperRegistry.Mappers.Add(new DataReaderMapper {YieldReturnEnabled = true} 
      ); 

      cfg.CreateMap<IDataRecord, AircraftDetails>(); 

     }); 

И мой код дб вызова и отображение выглядит

var aircraft=new AircraftDetails();   
     using (SqlConnection connection = 
       new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[_connectionString].ConnectionString)) 
     { 
      SqlCommand command = 
       new SqlCommand(storedProcedureAsString, connection); 


      command.AddInputParameters(new {a=aircraftId}); 

      connection.Open(); 

      SqlDataReader reader = command.ExecuteReader(); 
      if (reader.HasRows) 
      { 

       var res = Mapper.Map<IDataReader, IEnumerable<AircraftDetails>>(reader); 

       aircraft = res.FirstOrDefault(); 
      } 

     } 

     return aircraft; 

Когда я запускаю этот код я получаю ошибку:

Unhandled Exception: System.InvalidCastException: Specified cast is not valid. at DynamicCreate(IDataRecord) at AutoMapper.Data.DataReaderMapper.d__10.MoveNext() at System.Linq.Enumerable.d__94 1.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable 1 source)

Любые идеи, что я делаю не так?

Приветствия

Исмаил

ответ

0

Не уверен, но может быть, вы должны создать отображение не IDataRecord, но IDataReader:

cfg.CreateMap<IDataReader, IEnumerable<AircraftDetails>>(); 

на основе this question

+1

Hi Кудря, пробовал нет радости. Я только что последовал примеру в test.exe automapper.data, и вот как это делается, см. Https://github.com/AutoMapper/AutoMapper.Data/blob/master/AutoMapper.Data.Tests/DataReaderMapping.cs test When_mapping_a_data_reader_to_a_dto, так что отображение - это IDataRecord, но в map IDataReader имеет смысл, так как чтение на IDataReader дает вам IDataRecord. – Ismail

+0

Хм, а как насчет 'cfg.AddMemberConfiguration(). AddMember ();' в вашем разделе конфигурации? – kudrya

+0

kudrya, не пробовал, что, как я тогда решил использовать что-то еще, поскольку я нажимаю на время, поэтому я пошел с https://github.com/sixeyed/projects/tree/master/Sixeyed.Mapping, который работает. Я могу попытаться вернуться, если я получу время. Большое спасибо за помощь. – Ismail

 Смежные вопросы

  • Нет связанных вопросов^_^