实体框架核心5-从单个存储过程返回两个oracle游标

实体框架核心5-从单个存储过程返回两个oracle游标,oracle,.net-core,entity-framework-core,.net-5,Oracle,.net Core,Entity Framework Core,.net 5,我正在开发一个API,它调用一个oracle存储过程(我无法触摸它),并返回两个refcursors。问题是,在我的代码中,只有从sp返回的第一个游标被映射,而另一个游标抛出InvalidOperationException 我的存储库类 被映射的游标的类 游标的类,该类不包含 执行 错误 这是我第一次在dotnet环境中与oracle合作,但我遵循oracle的官方指南(请参阅)。正如您所看到的,它只适用于只返回一个游标的sp。有什么想法吗?任何帮助都将不胜感激 var sql = &qu

我正在开发一个API,它调用一个oracle存储过程(我无法触摸它),并返回两个refcursors。问题是,在我的代码中,只有从sp返回的第一个游标被映射,而另一个游标抛出InvalidOperationException

我的存储库类 被映射的游标的类 游标的类,该类不包含 执行

错误

这是我第一次在dotnet环境中与oracle合作,但我遵循oracle的官方指南(请参阅)。正如您所看到的,它只适用于只返回一个游标的sp。有什么想法吗?任何帮助都将不胜感激

var sql = "BEGIN CCO_PKG_WHITDRAWREQUEST.OBT_OPCION_RET_DES_PRC(:pi_num_seguro_social , :pi_num_resolucion, :po_cur_valida_res, :po_cur_opciones); END;";

            var parameters = new OracleParameter[]
            {
                new OracleParameter("pi_num_seguro_social", request.NSS),
                new OracleParameter("pi_num_resolucion", request.NumResolucion),
                new OracleParameter("po_cur_valida_res", OracleDbType.RefCursor, ParameterDirection.Output),
                new OracleParameter("po_cur_opciones", OracleDbType.RefCursor, ParameterDirection.Output)
            };
            
            //This one gets mapped without problems.
            var validaResCursor = await _context.CursorValidaRes.FromSqlRaw(sql, parameters).ToListAsync();
            
            //This one throws the exception.
            var opcionesCursor = await _context.CursorOpciones.FromSqlRaw(sql, parameters).ToListAsync();

            var result = (opcionesCursor, validaResCursor);
    [Keyless]
    public class ValidaResCursor
    {
        public string EsCVEValido { get; set; }
        public string Opcion { get; set; }
        public string Descripcion { get; set; }
        public double SaldoA { get; set; }
        public double SaldoB { get; set; }
        public string Vigencia { get; set; }
    }
}
    [Keyless]
    public class OpcionesCursor
    {
        public string cv { get; set; }
        public string tipo { get; set; }
        public string descripcion { get; set; }
        public double monto { get; set; }
        public double salario_bc { get; set; }
    }