我正在使用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>>();
基于这个问题