问题标签 [oracle-manageddataaccess]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4442 浏览

c# - C# - Oracle 存储过程返回没有行的 RefCursor

我的存储过程调用确实返回 7 行,但不是当我通过 Oracle 托管数据访问调用它时。

代码 :

存储过程

执行时: 无警告,无错误(所有参数均有效)

我的问题: 返回任何行(而不是预期的 7 行),但我检索了架构(列名是正确的)。


环境 :

  • 视窗 x64
  • .NET 框架:4.0
  • 已安装 Oracle 客户端 (v11.2) 但不是必需的
  • Oracle 数据提供者 .NET:Oracle.ManagedDataAccess (v121.1.2)
0 投票
1 回答
14936 浏览

c# - 如何在 EF 6 提供程序配置文件中添加/激活“Oracle.ManagedDataAccess.Client”?

我正在按照这些视频系列学习使用 VS2013 制作 ASP.Net MVC Web 应用程序。当我收到以下错误时:

找不到具有不变名称“Oracle.ManagedDataAccess.Client”的 ADO.NET 提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=260882

(在视频中,使用的数据库提供程序是System.Data.SqlClientASP.Net 应用程序的自然,但我需要使用Oracle.ManagedDataAccess.Client

错误本身在 SO中并不新鲜。而且,正如错误消息和 SO 问题的已接受答案所建议的那样,我检查了 ODP.Net 提供程序是否受 EF 6.0 支持,我发现它是. 尽管如此,我仍然无法使其工作。

我对 MVC 很陌生,所以如果我在这一点上理解错误的 MVC 应用程序/设置的任何概念,我会寻求您的理解,我愿意接受您的更正。

一些可能有用的附加信息:

  • 我使用我的 VS2013 提供的 ASP.Net Web 应用程序模板来启动项目。我为它使用 MVC 模板,并且只使用“为 MVC 添加文件夹和核心引用”。我既不是“添加单元测试”也不是“在云中托管”
  • 在模板中,没有app.config文件,但有Web.config文件(这有什么区别吗?错误消息中建议“确保提供程序已在应用程序配置文件的'entityFramework'部分注册”。)
  • 在 Web.config 文件中,我找到了以下entityFramework部分:
  • 我注意到有

    在那里排队。因此我尝试类似地添加:

    但我不知道为type属性写什么,EntityFramework.???并且已经卡了几个小时。如果我不说,我会收到以下警告:

    缺少必需的属性“类型”

    对此的任何帮助将不胜感激。

如果您知道除了添加提供程序来解决此问题之外,我还需要做任何其他事情,我也很乐意。我在文件中的连接字符串web.config如下:

0 投票
2 回答
14878 浏览

c# - 使用 EF 6 和 Oracle.ManagedDataAccess 时表不存在

我正在创建一个使用 EF6.0.0.0和 ODP.NetOracle.ManagedDataAccess版本4.121.2.0进行数据访问的 MVC 应用程序。

在我的Controller被​​调用EmployeeController中,我有以下代码片段:

当我加载Employee/Details.cshtml页面时,出现以下异常:

“执行命令定义时发生错误。有关详细信息,请参阅内部异常。”

在内部异常中,它说:

ORA-00942: 表或视图不存在

这让我感到困惑,因为在我的 Oracle 数据库中,该表肯定存在(我使用 Toad for Oracle 进行了检查):

在此处输入图像描述

数据库本身的connectionString连接字符串与我用于其他项目的连接字符串相同,并且我能够毫无困难地从数据库中查询数据。

这是我的Employee班级在以下声明中的声明方式Models/Employee.cs

而我Models/EmployeeContext.cs的只是由一个元素组成:

Global.asax.cs文件中,我已经为EmployeeContext模型初始化了数据库:

如果表格不存在,我仍然会收到什么错误?这里可能出了什么问题?任何建议如何调试这种情况?

编辑:

当我评估 时employeeContext.Employees,我得到以下值:

编辑2:

使用:

我在调试输出窗口中得到以下信息:

编辑3:

这就是我的连接字符串的样子,以防万一

entityFramework 的设置如下:

任何线索可能是问题所在?

附加信息:

异常堆栈跟踪:

内部异常堆栈跟踪:

0 投票
2 回答
2518 浏览

c# - 带有 ODP.Net Oracle.ManagedDataAccess 的 EF 6,如何对类属性使用非大写字母?

我将 EF 6 与 ODP.Net 一起Oracle.ManagedDataAccess用于我的 ASP.Net MVC Web 应用程序。

我有以下Model调用Employee(在Model\Employee.cs文件中):

EmployeeContext.cs

然后,在我的 中EmployeeController.cs,我使用EmployeeEmployeeContext这样的:

当我收到以下内部异常错误时:

Oracle.ManagedDataAccess.Client.OracleException: ORA-00904: "Extent1"."Id": 标识符无效

异常错误发生在:

当我使用调试输出控制台进一步调试时,我注意到 EF 生成以下 SQL 查询来获取数据:

随着我做更多的研究,我了解到由于 SQL 查询列名中存在引号" "(例如."Id",".EmployeeType"".HourlyPay"),查询找不到匹配的列名,因为 Oracle 数据表的列名是全部用大写字母表示(即:."ID"、、".EMPLOYEETYPE"".HOURLYPAY")。

现在,当我将类定义更改为如下内容时:

它工作得很好。但我不想那样

作为一个典型的 C# 编码器,我发现类字段/属性全部大写是很不寻常的。

我的问题是,有没有办法使用大写和小写字母的组合来保留类属性,仅用于查询,生成这些属性的大写字母版本?

同样,如果这些事情很重要,我会使用 EF6.0.0.0和 ODP.NetOracle.ManagedDataAccess版本4.121.2.0Oracle.ManagedDataAccess.EntityFramework版本。6.121.2.0

0 投票
2 回答
395 浏览

c# - 如何使我的 c# 表单与 oracle 一起为其他人工作?

我已经在 StackOverflow 上搜寻了这个问题的答案,但似乎没有任何帮助,所以我现在就在这里问它:

因此,我有一个相当简单的表单,其中包含一些标签和字段以及一个按钮。

单击按钮后,您将对数据库执行查询。结果显示在多个字段中。当我在工作中使用 Visual Studio 2013 中的 F5 为自己运行该程序时,该表单使用 Oracle.ManagedDataAccess 引用完美运行。

但是,当我在另一台工作的 PC(相同的网络和所有网络)上运行该程序时,该程序返回一个 oracle“ORA-12154:TNS:无法解析指定的连接标识符”-错误。

您应该知道的:我设置了 Oracle.ManagedDataAccess 以便它使用位于 c:\Oracle\product\10.2.0\client_1\network\ADMIN 的标准 TNSNames.ora 文件。对于网络上的每台工作中的 PC,此位置都是相同的。但是,TNSNames.ora 文件并不总是像我一样完整,我可能比其他人有更多可用的连接。这就是为什么,正如您很快将在我的代码中看到的那样,我基本上说:“如果在位置 Y 的文档 X 中找到 SID xxxxx,则什么也不做,否则,添加此处指定的必要连接信息:...”

这是我使用的涉及所有连接的代码。出于隐私原因,我用假名替换了连接细节,并将一些内容从荷兰语翻译成英文,以便您更好地理解。

由于代码很长,我只展示了有关连接的部分,其他所有内容都省略了。但正如我之前所说,完整的代码只适用于我。我想让它为工作中的其他人工作。

0 投票
4 回答
16382 浏览

c# - 如何正确关闭 ODP.net 连接:dispose() 或 close()?

这是我的PowerShell代码:

所以我打开 ODP.NET 连接$OracleConnexion.open()然后关闭它$OracleConnexion.close()是否足以正确关闭我与 Oracle 数据库的连接?还是我应该使用$OracleConnexion.Dispose()

我通过任务调度程序每 5 分钟执行一次我的 powershell ......所以也许我应该使用 Dispose() 来避免内存饱和?

0 投票
1 回答
682 浏览

c# - 如何将 BOOLEAN 传递给 Oracle 12c 程序?

如何BOOLEAN在 12c 中传递给 Oracle 程序?

听说在12c之前是不可能的,但是我在12c还是做不到。

我尝试了以下方法,但出现错误。

错误:

0 投票
1 回答
3099 浏览

entity-framework - 为 Oracle 托管数据访问配置 Web Config

经过广泛的谷歌搜索后,我似乎无法找到解决此问题的方法。简而言之,我在 MVC/Web API 应用程序中使用带有 EF 6 的 Oracle 托管数据访问客户端。

当我在本地运行时,我可以成功调用 Web API 2 控制器中的各种操作。没问题。

当我发布到我们的登台服务器时,我立即收到此错误:

“消息:底层提供程序在打开时失败。-Inner:Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-01017: 用户名/密码无效;在 OracleInternal.ConnectionPool.PoolManager 处登录被拒绝\r\n

显然,当我在本地运行时,用户名/密码很好,所以我觉得我错过了将它们放入我的 web.config 中的某个位置。

这是我的网络配置,您可以看到我使用整个 TNS 字符串作为连接字符串中的数据源值。如果我不这样做,登台站点会显示错误 - TNS:could not resolve the connect identifier specified

0 投票
0 回答
23 浏览

.net-4.5 - 在 .NET 4.5.1 中使用 Oracle Managed DataAccess 时从 oracle 返回不可打印的字符

我们刚刚将 VB.NET Web 应用程序从 .NET Framework 2.0 迁移到 4.5.1,作为此迁移的一部分,我们还将 OLE DB 驱动程序更新为 Oracle 托管数据访问驱动程序。

结果是现有代码中的一些查询正在获取低值(不可打印字符,特别是 chr(0)。)空字符串,但新迁移的代码碰巧按原样返回不可打印字符(返回为“�”) . 有谁知道这是否是由于框架或 Oracle 托管数据访问驱动程序的迁移。是否可以进行全局设置/配置以不返回这些“不可打印字符”。避免遍历代码并在多个地方屏蔽字符串?

0 投票
1 回答
274 浏览

oracle - Oracle.ManagedDataAccess 4.121.1.0 更新:ORA-01461:只能绑定长值以插入长列

更新表时出现此错误:

给出此错误的列定义为 aCLOB并且我正在尝试插入一个包含近 40k 个字符的字符串...我在这里读到,解决方案是定义ParameterDirectionasInputOutput而不仅仅是Input. 我做到了,但后来我收到以下错误

我怎么解决这个问题?我也认为是 dll 的问题,因为System.Data.OracleClient它运行良好。但我想使用Oracle.ManagedDataAccess,因为另一个已被弃用。

谢谢