2017-03-23 16 views
0

EF를 사용하지 않으려 고 DataTable을 지원하지 않기 때문에 Asp.NetCore 응용 프로그램에서 NReco.Data를 사용하여 db 호출을 만듭니다. 아직.Asp.NetCore에서 NReco.Data를 사용하여 StoredProcedure에서 여러 RecordSet을 얻는 방법

이제 StoredProcedure를 호출하고 여러 레코드 세트 (또는 사전 목록)를 가져와야합니다.

나는이 불리는 순간

: dbAdapter.Select($"STOREDNAME @{nameof(SQLPARAMETER)}", SQLPARAMETER).ToRecordSet()

을하지만 저장된 나에게 1 개 이상의 레코드를 제공, 사람이 다른 사람을 얻을하는 데 도움이 수 있습니까?

답변

0

현재 NReco.Data.DbDataAdapter에는 IDbCommand이라는 단일 결과로 반환되는 여러 결과 집합을 처리하기위한 API가 없습니다.

당신은 자신에 의해, IDbCommand을 구성하는 데이터 판독기를 실행하고 다음과 같은 방법으로 여러 결과 집합을 읽을 수는 :

NReco.Data 저자로
IDbCommand spCmd; // lets assume that this is DB command for 'STOREDNAME' 
RecordSet rs1 = null; 
RecordSet rs2 = null; 
spCmd.Connection.Open(); 
try { 
    using (var rdr = spCmd.ExecuteReader()) { 
     rs1 = RecordSet.FromReader(rdr); 
     if (rdr.NextResult()) 
      rs2 = RecordSet.FromReader(rdr); 
    } 
} finally { 
    spCmd.Connection.Close(); 
} 

나는 여러 결과 집합에 대한 지원을 쉽게 DbDataAdapter에 추가 할 수 있다고 생각 API (방금 github에 issue for that을 만들었습니다).

(var companies, var contacts) = DbAdapter.Select("exec STOREDNAME").ExecuteReader( 
    (rdr) => { 
    var companiesRes = new DataReaderResult(rdr).ToList<CompanyModel>(); 
    rdr.NextResult(); 
    var contactsRes = new DataReaderResult(rdr).ToList<ContactModel>(); 
    return (companiesRes, contactsRes); 
    }); 

를 동일한 방식으로 DataReaderResult :

- - UPDATE는 다음과 같은 방식으로 여러 결과 집합을 처리 할 수있다 NReco.Data의 v.1.0.2부터 출발

결과를 사전 또는 RecordSet에 매핑 할 수 있습니다.