2017-12-14 15 views
1

여러 개의 결과 집합을 처리하기 전에 QueryMultiple을 사용했지만 반환되는 결과 집합의 정확한 수를 알고있었습니다. 이 경우 저장된 프로 시저를 QueryMultiple으로 호출하면 반환되는 결과 집합의 수는 다양합니다. PetaPoco 나 Dapper와 같은 다른 orm에서 이것을 처리 할 수 ​​있습니까?Petapoco 또는 Dapper에서 다양한 수의 결과 집합을 처리합니까?

답변

2

Dapper의 QueryMultiple 메서드는 GridReader을 반환합니다. GridReader는 가능한 모든 결과 집합을 읽은 때 true로 변경해야 .IsConsumed 속성이 있습니다, 그래서 작동 될 수 있습니다

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

또는 말끔 그냥 "매개 변수를 팩 않는 ExecuteReader 방법을 가지고 있으며, 단계 "그냥 노출하는 GetTypeDeserializer 방법"객체 "코드에 행을 실현를 호출, 그래서 당신은 수동으로 그 결합 수, 즉 :

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

(나는 petapoco에 대해 많이 미안 모른다)

+0

Marc에게 감사드립니다. 다른 하나보다 빠릅니다. – xaisoft

+0

@xaisoft는 시간을 내서 자유롭게 알려주고 있습니다. –

+0

Marc, QueryMultiple을 계속 진행했습니다. 그것은 위대한 작품. 다시 한 번 감사드립니다. – xaisoft