首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >枚举后Dapper返回结果失败

枚举后Dapper返回结果失败
EN

Stack Overflow用户
提问于 2013-12-28 05:10:07
回答 1查看 415关注 0票数 0

我有一个简洁的查询多个函数,它可以输出许多不同的列表,但第一个列表除外。在调试过程中,我发现当代码到达Dapper中的以下行时,结果会消失:

代码语言:javascript
运行
复制
public IEnumerable<T> Read<T>....
    var result = ReadDeferred<T>(gridIndex, deserializer.Func, typedIdentity); //result has correct db values here
    return buffered ? result.ToList() : result; //result = Enumeration yielded no results

ReadDeferred函数不处理try或finally子句中的任何代码。为什么枚举中会丢失result的值?

下面是我调用dapper的代码:

代码语言:javascript
运行
复制
var results = con.QueryMultiple("GetInspections", p, commandType: CommandType.StoredProcedure, commandTimeout: 5000);
var inspectionDetails = new Inspection
{
    InspectionDetailList = results.Read<Inspection>().ToList(), <-- this one does not popuplate
    SOHList = results.Read<SOHPrograms>().ToList(),
    BuildingList = results.Read<Building>().ToList(),
    AdministratorList = results.Read<Employee>().ToList(),
    NotAdminList = results.Read<Employee>().ToList(),
    InspectionList = results.Read<InspectionList>().ToList()
};

return inspectionDetails;

我已经验证了从sql查询返回的每个列表都有结果集。

EN

Stack Overflow用户

发布于 2013-12-30 22:34:51

这个问题有两个部分的答案,因为我有两个问题错误。第一个是我将InspectionDetailList作为一个列表从我删除的检查对象内部调用,第二个是更改调用dapper的代码,使其使用using语句并单独调用这些片段。感谢我的一个朋友,其中一个溢出的帖子找到了here

代码语言:javascript
运行
复制
using(var results = con.QueryMultiple("GetInspections", p, commandType: CommandType.StoredProcedure, commandTimeout: 5000))
{
    var inspectionDetails = results.Read<Inspection>().First();
    inspectionDetails.OshList = results.Read<SOHPrograms>.ToList();
    inspectionDetails.BuildingList = results.Read<Building>.ToList(); 
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20807864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档