vNe*_*ext 2 c# idatareader automapper
using (IDataReader dr = DatabaseContext.ExecuteReader(command))
{
if (dr.Read())
{
AutoMapper.Mapper.CreateMap<IDataReader, ProductModel>();
return AutoMapper.Mapper.Map<IDataReader, IList<ProductModel>>(dr);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
如果dr 只有一行 - >错误:抛出"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException"类型的异常
如果博士有多行,它运行正常.
任何帮助?
问题是Automapper也在调用Read() - 所以试图始终查看第二条记录.如果你想一想,如果你在阅读器中有1000行 - 那么AutoMapper如何将它转换为列表而不迭代它们全部调用Read()?
更改您的行以调用HasRows
例如
using (IDataReader dr = DatabaseContext.ExecuteReader(command))
{
if (dr.HasRows)
{
AutoMapper.Mapper.CreateMap<IDataReader, ProductModel>();
return AutoMapper.Mapper.Map<IDataReader, IList<ProductModel>>(dr);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9189 次 |
| 最近记录: |