映射时出现 AutoMapper.Data 错误



我正在使用automapper v4.1.1和automapper.data1.0.0.beta 1。我有控制台应用程序,我的映射代码如下所示:

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;

当我运行此代码时,出现错误:

未处理的异常:系统无效转换异常:指定的强制转换无效。 at DynamicCreate(IDataRecord ( at AutoMapper.Data.DataReaderMapper.d__10.MoveNext(( 在System.Linq.Enumerable.d__94 1.MoveNext() at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable 1个来源(

知道我做错了什么吗?

干杯

伊斯梅尔

不确定,但也许你应该为IDataRecord创建映射,而不是为IDataReader创建映射:

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

基于这个问题

最新更新