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

2023-12-21

我正在开发一个 API,它调用 Oracle 存储过程 - 我无法触及它 - 并返回two参考光标。问题是在我的代码中,只有从 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; }
    }

执行

第一个游标被正确映射(它只有 1 行)。 https://i.stack.imgur.com/42g9b.png

Error

第二个光标抛出错误。 https://i.stack.imgur.com/7XXtj.png

这是我第一次在 dotnet 环境中使用 oracle,但我遵循 oracle 的官方指南(请参阅。https://github.com/oracle/dotnet-db-samples/blob/master/samples/dotnet-core/ef-core/stored-procedure/return-ref-cursor.cs https://github.com/oracle/dotnet-db-samples/blob/master/samples/dotnet-core/ef-core/stored-procedure/return-ref-cursor.cs)正如您所看到的,显然它只适用于仅返回一个游标的 sp。有任何想法吗?任何帮助将不胜感激。


目前 EF Core 不支持:https://github.com/dotnet/efcore/issues/8127 https://github.com/dotnet/efcore/issues/8127查看链接以找到此问题的替代方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架核心 5 - 从单个存储过程返回两个 Oracle 游标 的相关文章

  • Oracle SQL - 如何使用 RANK() 或 DENSE_RANK() 和 ROW_NUMBER() 分析函数获取不同的行?

    我希望获得每个部门前 3 名不同的薪资 我能够使用RANK or DENSE RANK or ROW NUMBER 但我的表有一些工资相同的记录 下面提到的是我的查询及其结果 20部薪资前三名应该是6000 3000 2975 但是有 2
  • 忽略连接实体的全局查询过滤器

    全局查询过滤器在实现租户和软删除功能时非常方便 但我的问题是 例如 当我编写带有联接的查询时 dbContext entity1 Include entity2 entity3 entity4 Where something select
  • system.web.http.HttpError 的.Net 标准/核心版本

    从 net Framework 迁移到 net Standard Core 时 我遇到了 HttpError 类 除了兼容性垫片之外 我在 net core standard 中找不到任何等效项 这只是一个临时解决方案 不知道官方有没有替代
  • 从 ASP.NET Core 2.2 迁移到 3.1

    我们目前有一个ASP NET 核心 2 2我们想要迁移到的网络应用程序3 1 因为它较新并且包含一些增强功能 有关于迁移的文章2 2 to 3 0但不是2 2 to 3 1 是升级到的首选迁移途径3 0先升级到3 1 之间似乎有很多不兼容的
  • 尝试实现 LeftJoin 扩展方法以与 EF Core 2.0 一起使用

    我正在尝试使用扩展方法来实现返回的左外连接IQueryable针对 EF Core 2 0 数据上下文运行 我在这里阅读了 Stack Overflow 线程以寻求帮助 使用 LINQ 的 IQueryable 左外连接的扩展方法 http
  • 根据 Oracle SQL 中的营业时间计算时间

    我希望根据工作时间计算任务开始和结束之间的时间 我有以下示例数据 TASK START TIME END TIME A 16 JAN 17 10 00 23 JAN 17 11 35 B 18 JAN 17 17 53 19 JAN 17
  • 在 Oracle 过程中实现多线程

    我正在研究 Oracle 10gR2 这是我的问题 我有一个程序 我们称之为 proc parent 在包内 应该调用另一个过程 让我们调用它 用户创建 我得打电话 用户创建 在一个循环中 它从表中读取一些列 并且这些列值作为参数传递给 用
  • Oracle SQL 触发器上的变异表

    我正在尝试执行触发器 但出现变异表错误 SQL 代码是这样的 CREATE OR REPLACE TRIGGER CHK Apartado D BEFORE INSERT OR UPDATE ON CONTRACTS FOR EACH RO
  • DatabaseGenerate(DatabaseGenerateOption.Identity) 与 Key

    首先看代码 我看到一些使用的示例 DatabaseGenerated DatabaseGeneratedOption Identity 表示主键 以及其他使用的示例 Key 我无法找到两者如何比较的描述 有人可以告诉我何时 是否想使用其中一
  • PL/SQL 过程成功完成但没有显示任何内容

    我有以下过程代码 create or replace PROCEDURE Ventas cliente p DNI IN CHAR IS CURSOR c pedidos clientes IS SELECT FROM Pedidos ve
  • 当网站停止时,Oracle 数据提供程序会固定 IIS 工作进程

    我们在 Oracle 11g 第 2 版中遇到了一个严重的问题 其中 w3wp 进程接管了整个处理器核心 并且调试显示 Oracle 数据提供程序无限地抛出 ThreadAbortException 开发人员通过执行以下操作发现了此问题 1
  • 如何记录更改列 DDL 操作

    我需要创建一个数据库触发器来记录每个更改 Add Column Modify Column Drop Column 使用Oracle的模式触发器在特定表中执行语句 如何获得 到目前为止我尝试了下面的代码 TRIGGER after ddl
  • ASPNETCoreModule 未与 .NET Core SDK 一起安装

    我安装了VS 2017随着 NET Core SDK在Windows 10上 但它没有安装ASPNETCoreModule如下图2所示 我想 NET Core SDK应该隐式安装它 并且不必单独安装它 NOTE 我正在尝试将我的 asp n
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • 使用 SQL 序数位置表示法的好处?

    背景资料 序数位置表示法 又称序数 是基于列列表中的列顺序的列简写 SELECT子句 而不是列名或列别名 通常支持在ORDER BY子句 某些数据库 MySQL 3 23 PostgreSQL 8 0 支持语法GROUP BY条款也是如此
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 使用 Novell LDAP 对 .NET Core 中的 AD 进行页面 LDAP 查询

    我正在使用 Novell LDAP 库从 NET 代码应用程序查询 Active Directory 大多数查询都会成功 但有些查询会返回 1000 多个结果 而 AD 服务器会拒绝这些结果 因此 我试图找出如何使用 Novell 的库来分
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • Delphi 5 中的 Oracle 数据库连接

    我正在使用 Delphi 5 版本 我想连接到 Oracle 数据库 我有 TDatabase 组件 我不知道如何通过 Delphi 连接到数据库 请提供连接数据库的步骤 谢谢 The TDatabase http docwiki emba

随机推荐

  • yq (GO/Mike Farah) 递归地唯一化所有数组

    这可能与我发布的另一个问题有关 yq GO Mike Farah 对所有数组进行递归排序 https stackoverflow com questions 73746627 yq go mike farah sort all arrays
  • 如何在 JSF 框架中使用 li 和 ul 标签?

    如何在 JSF 框架中使用 li 和 ul 标签 您可以将标准 html 与 JSF 语法混合使用 写吧 ul li Apple li li Banana li ul 我猜你想要的是显示一个列表List 如果您使用 Facelets 请执行
  • 如何在 Swift 中从 hashValue 实现 hash(into:) ?

    我不太清楚如何处理编译器发出的不使用警告hashValue而是实施hash into Hashable hashValue 作为协议要求已被弃用 符合 通过实现 hash into 将 MenuItem 键入 Hashable 答案来自Sw
  • EditText 提示在 5.0.1 中不显示

    我有最新的 5 0 1 更新 EditText 提示已停止显示 I have
  • 我可以使用 标签跨域发送 cookie 吗?

    看看这个情况 www websitea com显示一个img带有一个标签src的属性www websiteb com image aspx id 5 and style display none www websiteb com除了名称为
  • 无法在 OS X 上链接到 Boost.Python

    我正在尝试使用 Boost Python 构建一个非常简单的示例 我已经用自制软件安装了 boost 和 boost python 我正在使用 python 3 4 3 和 boost 1 59 我的操作系统是 El Capitan Boo
  • SQL:将具有增量 id 的列添加到 SELECT

    我有一个简单的查询 例如 SELECT name FROM people The people表没有唯一的 id 列 我想在查询结果中添加一列id与增量int从 0 或 1 开始 无所谓 如何才能实现这一目标呢 postgresql 数据库
  • 什么时候(如果有的话)可以部分应用类型同义词?

    我写的显然有点心不在焉就像是 https github com leftaroundabout manifolds commit 3cef6cd231130fa179a1812df7f07e8c53bff3ff diff e59c01034
  • 如何使用 Maven 以编程方式下载 jar

    我正在编写一个应用程序 需要我下载一个给定 mavens groupid artifactid version 的 jar 我目前从 public Model pomToModel String pomUrl throws Exceptio
  • 分隔两个 Base64 字符串的最佳方法

    我正在使用标准输入和输出将 2 个 base64 字符串从一个应用程序传递到另一个应用程序 分离它们的最佳方法是什么 以便我可以在其他应用程序中将它们作为两个单独的字符串 我正在考虑使用一个简单的逗号来分隔它们 然后使用 string s
  • 如何从oracle表中选择偶数记录?

    我正在使用下面的查询来检索偶数记录 但在结果中它没有显示任何行 select ename job from emp where mod rownum 2 0 为什么 mod rownum 2 在 where 条件下不起作用 您还可以给出选择
  • 一般错误:1215 无法添加外键约束,Laravel 5 和 MySQL

    在一个空白的 Laravel 项目中 我想在之间创建外键约束users and 问题 where users表将容纳内置 LaravelUser but Question将是一个定制模型 运行后php artisan migrate出现以下
  • Vue计算问题-什么时候再次计算

    Vue计算已经让我困惑了一段时间 什么时候会再次计算 条件1 data return cart item nums 10 price 10 computed total return this cart item nums this car
  • SQLITE_BUSY 数据库被锁定 java

    我创建了一个使用 sqlite 数据库的 java 软件 整个数据库工作顺利 但是在运行应用程序一段时间后 我收到以下消息 来自 try catch 块 java sql SQLException SQLITE BUSY 数据库文件被锁定
  • 硬币游戏算法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 来玩个游戏 有 n 叠硬币排成一排
  • 如何处理Spring Boot重定向到/错误?

    我遇到了同样的问题这个问题 https stackoverflow com questions 28902374 spring boot rest service exception handling 使用 Spring Boot 1 3
  • c++ windows中什么进程正在监听某个端口

    我用 Visual C 创建了一个程序 在其中实现了一个 Web 服务 Web 服务设置为侦听端口 80 但如果另一个程序已在使用此端口 则 Web 服务将无法启动 因此 当Web服务无法启动时 我希望有一个函数或方法 它可以获取当前使用端
  • 如何在 Google BigQuery 中将日期解析为周年?

    我需要选择两组数据 一组来自上周 一组来自去年同一周 我看到这个工作的方式是提取周数 所以 SELECT EXTRACT WEEK FROM DATE FIELD 然后我根据上周一得到去年的年份值 就像这样 SELECT DATE SUB
  • 使用 Octokit 更新 GitHub 存储库中的文件

    我正在尝试开发一个 Windows 窗体应用程序 可以使用 Octokit 创建 更新和删除 GitHub 存储库中的文件 public Form1 InitializeComponent var ghClient new GitHubCl
  • 实体框架核心 5 - 从单个存储过程返回两个 Oracle 游标

    我正在开发一个 API 它调用 Oracle 存储过程 我无法触及它 并返回two参考光标 问题是在我的代码中 只有从 sp 返回的第一个游标被映射 而另一个游标则被映射无效操作异常 我的存储库类 var sql BEGIN CCO PKG