Stored procedures 如何使用Asp.NetCore中的NReco.Data从StoredProcess获取多个记录集

Stored procedures 如何使用Asp.NetCore中的NReco.Data从StoredProcess获取多个记录集,stored-procedures,datatable,asp.net-core,nreco,Stored Procedures,Datatable,Asp.net Core,Nreco,我在Asp.NetCore应用程序中使用NReco.Data来进行db调用,因为我不想使用EF,而且DataTable还不受支持 现在我需要调用StoredProcess并获取多个记录集或字典列表 当时我称之为: dbAdapter.选择$STOREDNAME@{nameofSQLPARAMETER},SQLPARAMETER.ToRecordSet 但是存储给我的记录集不止一个,有人能帮我获取其他记录集吗?目前NReco.Data.DbDataAdapter没有API来处理单个IDB命令返回的

我在Asp.NetCore应用程序中使用NReco.Data来进行db调用,因为我不想使用EF,而且DataTable还不受支持

现在我需要调用StoredProcess并获取多个记录集或字典列表

当时我称之为: dbAdapter.选择$STOREDNAME@{nameofSQLPARAMETER},SQLPARAMETER.ToRecordSet

但是存储给我的记录集不止一个,有人能帮我获取其他记录集吗?

目前NReco.Data.DbDataAdapter没有API来处理单个IDB命令返回的多个结果集

您可以通过以下方式自行编写IDB命令、执行数据读取器和读取多个结果集:

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();
}
(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);
  });
作为NReco.Data的作者,我认为可以很容易地将对多个结果集的支持添加到我刚刚在github上创建的DbDataAdapter API中

-更新-

从NReco.Data v.1.0.2开始,可以通过以下方式处理多个结果集:

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();
}
(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可以在需要时将结果映射到字典或记录集