Stored procedures 如何使用Asp.NetCore中的NReco.Data从StoredProcess获取多个记录集
我在Asp.NetCore应用程序中使用NReco.Data来进行db调用,因为我不想使用EF,而且DataTable还不受支持 现在我需要调用StoredProcess并获取多个记录集或字典列表 当时我称之为: dbAdapter.选择$STOREDNAME@{nameofSQLPARAMETER},SQLPARAMETER.ToRecordSet 但是存储给我的记录集不止一个,有人能帮我获取其他记录集吗?目前NReco.Data.DbDataAdapter没有API来处理单个IDB命令返回的多个结果集 您可以通过以下方式自行编写IDB命令、执行数据读取器和读取多个结果集: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命令返回的
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可以在需要时将结果映射到字典或记录集