使用query multiple读取多个结果集

Read multiple result sets using query multiple

我的程序返回两个结果 sets/tables, 我想将这两个结果集读取到两个不同的列表中并绑定该列表。

我能够将一个结果集读入列表,但我尝试了多种方法将多个结果集读入动态列表,但它给了我 "TTC Error Oracle"。

如何使用QueryMultiple读取多个结果集?

将单个结果集读入动态列表的代码:

public ResponseModel GetDoctorDetails(CustomerRequest data)
{
    try
    {
        var p = new OracleDynamicParameters();
        p.Add("p_parameter1", data.PARAMETER1, dbType: OracleDbType.Int32, direction: ParameterDirection.Input, size: 8);
        p.Add("p_parameter2", data.PARAMETER2, dbType: OracleDbType.Int32, direction: ParameterDirection.Input, size: 8);
        p.Add("p_out_cursor", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output, size: 0);
        using (var multi = _oracleConnection.QueryMultiple("procedure_name", param: p, commandType: CommandType.StoredProcedure))
        {
            List<dynamic> list = multi.Read<dynamic>().AsList();

            return new ResponseModel { ResultSet = list, StatusCode = 1, StatusDescription = "Success" };
        }
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

我尝试了以下方法来读取多个结果集,但它给了我 "TTC Error"

List<DataTable> list = new List<DataTable>();
list = multi.Read<DataTable>().AsList();

List<List<dynamic>> list = new List<List<dynamic>>();
list = multi.Read<List<dynamic>>().AsList();

请帮忙。

看来你必须做两件事。

首先,您需要一种方法来映射返回的空间。为此,您必须创建自己的映射器供 Dapper 读取。您可以在此处查看如何执行此操作:

Dapper. Map to SQL Column with spaces in column names

对于多个查询,您只需为每个集合调用多次读取即可:

 using (var multi = _oracleConnection.QueryMultiple("procedure_name", param: p, commandType: CommandType.StoredProcedure))
        {
            List<dynamic> list1 = multi.Read<dynamic>().AsList();
            List<dynamic> list2 = multi.Read<dynamic>().AsList();
            List<dynamic> list3 = multi.Read<dynamic>().AsList();

            ...
        }