处理Petapoco或Dapper中不同数量的结果集?

时间:2017-12-14 16:47:47

标签: dapper petapoco

之前我曾使用QueryMultiple来处理多个结果集,但我知道返回的结果集的确切数量。在这种情况下,当我使用QueryMultiple调用存储过程时,返回的结果集数量会有所不同。是否有可能在PetaPoco或Dapper等其他领域处理这个问题?

1 个答案:

答案 0 :(得分:2)

Dapper的QueryMultiple方法返回GridReader; GridReader.IsConsumed属性,当您已阅读所有可用结果集时,该属性应更改为true,以便可能有效:

using(var reader = conn.QueryMultiple(...)) {
    do {
        var data = reader.Read<...>().AsList();
        // ...
    } while(!reader.IsConsumed);
}

或者,Dapper有一个ExecuteReader方法,只需执行&#34;打包参数并调用步骤&#34;,以及GetTypeDeserializer方法,只显示&#34;实现a划入一个物体&#34;代码,所以你可以手动组合这些,即:

using(var reader = conn.ExecuteReader(...)) {
    do {
        var parser = SqlMapper.GetTypeDeserializer(...);
        while(reader.Read()) {
            var obj = parser(reader);
            // ...
        }
    } while(reader.NextResult());
}

(我不太了解petapoco,对不起)