2017-02-15 3 views
1

Ich bin mit AutoMapper v4.1.1 und automapper.data1.0.0.beta 1. Ich habe Konsole app und meinen Mapping-Code wie folgt aussehen:AutoMapper.Data Fehler beim Abbilden

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

      cfg.CreateMap<IDataRecord, AircraftDetails>(); 

     }); 

Und meinen db Anruf-Code und Abbildung sieht aus wie

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; 

Wenn ich diesen Code ausführen ich erhalte Fehler:

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)

Irgendwelche Ideen, was ich falsch mache?

Prost

Ismail

Antwort

0

nicht sicher, aber kann man Mapping nicht für IDataRecord schaffen sollte, aber für IDataReader:

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

Basierend auf this question

+1

Hallo kudrya, versucht, dass keine Freude. Ich habe gerade Beispiel in automapper.data Test gefolgt und thats, wie es getan ist, siehe https://github.com/AutoMapper/AutoMapper.Data/blob/master/AutoMapper.Data.Tests/DataReaderMapping.cs test When_mapping_a_data_reader_to_a_dto so Zuordnung ist IDataRecord aber in map IDataReader ist sinnvoll, wenn IDataReader IDataRecord enthält. – Ismail

+0

Hm, und was ist 'cfg.AddMemberConfiguration(). AddMember ();' in Ihrem Konfigurationsabschnitt? – kudrya

+0

Kudrya, nicht versucht, dass, wie ich dann beschlossen, etwas anderes zu verwenden, wie ich für die Zeit gedrückt bin, so ging ich mit https://github.com/sixeyed/projects/tree/master/Sixeyed.Mapping, die funktioniert. Ich werde versuchen, es wieder zu besuchen, wenn ich Zeit bekomme. Vielen Dank für deine Hilfe. – Ismail

Verwandte Themen