現在、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を作成しました)。
- UPDATE - 以下のように複数の結果セットを処理することが可能であるNReco.Dataのv.1.0.2から出発
:
(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
必要に応じて結果を辞書やRecordSet
にマップできます。