gpt4 book ai didi

c# - 带有来自 IDataReader 的列表数据的 AutoMapper

转载 作者:行者123 更新时间:2023-12-03 21:37:57 26 4
gpt4 key购买 nike

using (IDataReader dr = DatabaseContext.ExecuteReader(command))
{
if (dr.Read())
{
AutoMapper.Mapper.CreateMap<IDataReader, ProductModel>();
return AutoMapper.Mapper.Map<IDataReader, IList<ProductModel>>(dr);
}
return null;
}

如果博士有 只有一行 -> 错误:抛出“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;
}

关于c# - 带有来自 IDataReader 的列表数据的 AutoMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6873822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com