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>();
});
我的DB调用代码映射看起来像
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)
任何想法我做错了吗?
干杯
伊斯梅尔
嗨kudrya,试过了没有快乐。我只是遵循automapper.data测试中的例子,这是如何完成看到https://github.com/AutoMapper/AutoMapper.Data/blob/master/AutoMapper.Data.Tests/DataReaderMapping.cs测试When_mapping_a_data_reader_to_a_dto所以映射是IDataRecord但在地图IDataReader有点像IDataReader中的读取给你IDataRecord。 – Ismail
Hm,在配置部分中的'cfg.AddMemberConfiguration()。AddMember();'怎么办? –
kudrya
kudrya,没有试过,因为我然后决定使用别的东西,因为我时间紧迫,所以我去了https://github.com/sixeyed/projects/tree/master/Sixeyed.Mapping哪些作品。如果我有时间,我可以尝试重温。非常感谢您的帮助。 – Ismail