目前NReco.Data.DbDataAdapter
没有用于处理单个返回的多个结果集的 API IDbCommand
。
您可以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 上 为此创建了一个问题)。
- 更新 -
从 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
如果需要。