當前NReco.Data.DbDataAdapter
沒有用於處理由單個IDbCommand
返回的多個結果集的API。
你可以自己撰寫IDbCommand
,執行數據讀取器,並在下面的方式讀取多個結果集:
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();
}
由於NReco.Data筆者我認爲對於多個結果集的支持,可以很容易地添加到DbDataAdapter
API(我剛剛在github上創建了一個issue for that)。
- 更新 -
從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
。