问题标签 [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.
c# - C# - Oracle 存储过程返回没有行的 RefCursor
我的存储过程调用确实返回 7 行,但不是当我通过 Oracle 托管数据访问调用它时。
代码 :
存储过程
执行时: 无警告,无错误(所有参数均有效)
我的问题: 返回任何行(而不是预期的 7 行),但我检索了架构(列名是正确的)。
环境 :
- 视窗 x64
- .NET 框架:4.0
- 已安装 Oracle 客户端 (v11.2) 但不是必需的
- Oracle 数据提供者 .NET:Oracle.ManagedDataAccess (v121.1.2)
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.SqlClient
ASP.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
如下:
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 的设置如下:
任何线索可能是问题所在?
附加信息:
异常堆栈跟踪:
内部异常堆栈跟踪:
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
,我使用Employee
和EmployeeContext
这样的:
当我收到以下内部异常错误时:
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.0
和Oracle.ManagedDataAccess.EntityFramework
版本。6.121.2.0
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,则什么也不做,否则,添加此处指定的必要连接信息:...”
这是我使用的涉及所有连接的代码。出于隐私原因,我用假名替换了连接细节,并将一些内容从荷兰语翻译成英文,以便您更好地理解。
由于代码很长,我只展示了有关连接的部分,其他所有内容都省略了。但正如我之前所说,完整的代码只适用于我。我想让它为工作中的其他人工作。
c# - 如何正确关闭 ODP.net 连接:dispose() 或 close()?
这是我的PowerShell代码:
所以我打开 ODP.NET 连接$OracleConnexion.open()
然后关闭它$OracleConnexion.close()
是否足以正确关闭我与 Oracle 数据库的连接?还是我应该使用$OracleConnexion.Dispose()
?
我通过任务调度程序每 5 分钟执行一次我的 powershell ......所以也许我应该使用 Dispose() 来避免内存饱和?
c# - 如何将 BOOLEAN 传递给 Oracle 12c 程序?
如何BOOLEAN
在 12c 中传递给 Oracle 程序?
听说在12c之前是不可能的,但是我在12c还是做不到。
我尝试了以下方法,但出现错误。
错误:
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
.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 托管数据访问驱动程序的迁移。是否可以进行全局设置/配置以不返回这些“不可打印字符”。避免遍历代码并在多个地方屏蔽字符串?
oracle - Oracle.ManagedDataAccess 4.121.1.0 更新:ORA-01461:只能绑定长值以插入长列
更新表时出现此错误:
给出此错误的列定义为 aCLOB
并且我正在尝试插入一个包含近 40k 个字符的字符串...我在这里读到,解决方案是定义ParameterDirection
asInputOutput
而不仅仅是Input
. 我做到了,但后来我收到以下错误
我怎么解决这个问题?我也认为是 dll 的问题,因为System.Data.OracleClient
它运行良好。但我想使用Oracle.ManagedDataAccess
,因为另一个已被弃用。
谢谢