问题标签 [dbproviderfactories]
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# - 查询和泛型
我正在开发一个对 Oracle 进行数据访问的 C# 解决方案。
并希望有一个关于查询的通用解决方案。
这是我的代码的一部分:
我这样称呼我的方法:
这很好用,但这不是我的目标。
CL_mpg
我的所有 SQL 查询都调用了第二个类。
而且我想使用我的方法selectParam
和/或select
填充我的数据表,但我不知道该怎么做。
c# - 当 ODBC 测试连接成功时,Oracle InstantClient ODBC 连接在 DbProviderFactory 中失败
- 安装了 InstantCLient 11.2.0.4 Basic Lite 和 ODBC 包
- 设置 ORACLE_HOME 和 TNS_ADMIN 环境变量,并将安装路径添加到 Path 环境变量中
- 在该位置创建了我的 tnsnames.ora 文件
- 使用文件中的 TNS 设置我的 DSN 并进行测试连接 - 成功。
- 使用我之前开发的 C# 代码,它使用 DbProviderFactoies 通用方法连接到数据提供程序(已经与 Teradata、SQL Server 一起使用)
- 使用以下 connectionString 创建了我的数据源配置:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="DataSource" connectionString="DRIVER={Oracle in instantclient_11_2};Data Source=Test Oracle;Persist Security Info=True;Password=password;User=user" providerName="System.Data.OracleClient"/> </connectionStrings> </configuration>
- 导致“ORA-12560:TNS:协议适配器错误”。
- 我在连接字符串上尝试了许多变体,它们都导致某种错误。任何帮助都感激不尽。
系统信息
- 视窗服务器 2003 64 位
- C# .NET 3.5
- Oracle 11g 11.2.0.3.0 远程数据库
.net - 捕获 ADO.net DB 查询运行时
我正在尝试为下面的 C# .net Web 应用程序捕获 Db 查询。
如果我通过制作它的代理来使用 DbProviderfactory,那么有办法做。但是,如果我像下面这样直接使用 SqlConnection 和 SqlCommand,而不是使用 DbProviderFactory,我如何跟踪我的数据库调用?
我知道有分析器可以跟踪这一点。但是,我想在我自己的程序中做到这一点。
基本上我需要在 Web 请求中分析 Db Connection 和 Db 命令,其中不使用 DbProviderFactories。我是为 .Net 开发分析器的新手,所以我希望有一些指导方针可以做到这一点。
谢谢。
c# - 不明白为什么 DbProviderFactories.GetFactory 返回 NULL
在我的 C# 应用程序中,我大致有以下代码:
在 App.Config 中:
在我的代码中:
这为我创建了一个连接变量,conn
并且效果很好(我可以打开连接、查询它等),所以我知道我引用了正确的库。
但是,稍后,我需要再次获得工厂并使用:
但是,无论出于何种原因,我收回了那个factory = null
。
我做错了什么吗?
c# - 如何使用 nunit 测试 DbProviderFactories
对于下面的方法,我想传入一个DbProviderFactories
类的模拟,但不能因为它是一个静态类:
如何测试我的代码/如何模拟DbProviderFactories
?
asp.net - 实体框架错误 - 无法确定类型为“System.Data.EntityClient.EntityConnection”的连接的 DbProviderFactory 类型
我使用实体框架 6.1.3 & Sql Server 2008 & VS2013
我从事 Asp.net 项目。在我的项目中,我使用 3 层架构(App 项目 - BLL 项目 - DAL 项目)。在 DAL 项目上,我创建了实体数据模型并在其上加载数据库。
我还将“App.config”数据(从 DAL 项目)传输到“Web.config”(App 项目)。
现在,当我想从 EF 获取数据时,我得到了异常。
无法确定类型为“System.Data.EntityClient.EntityConnection”的连接的 DbProviderFactory 类型。确保在应用程序配置中安装或注册了 ADO.NET 提供程序。
这是 app.config 的内容:
如何解决这个问题?
c# - 单元测试 DbProviderFactory 的最佳方法
我正在尝试为我们拥有的旧代码创建单元测试(NUnit)。
在对该表进行任何操作之前,我们使用 DbProviderFactory 来检查数据库中是否存在该表。
我知道这可能看起来更像集成测试,但不管你怎么称呼它,我都需要对其进行测试。我更喜欢使用自包含而不依赖于数据库的东西。
我尝试使用 excel 作为我的数据源,但是要在 excel 中选择表,它应该在表名之后有 $,这在我的情况下不起作用,因为我不想修改我的代码以适应单元测试。
如何对以下代码进行单元测试?
任何帮助,将不胜感激。
.net - 为 ODP.NET 添加 DbProviderFactories 条目时 app.config 不起作用
我尝试在我的应用程序中使用 Oracle.ManagedDataAccess.Client。我将此添加到我的 app.config(嵌入式资源)中:
DBFactories 列表不包含 Oracle.ManagedDataAccess.Client。当我将相同的条目添加到我的 maschine.config (C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config) 时,一切正常。
这就是我查询 DBProviders 的方式(但提供程序列表不包含我的条目):
那么为什么不使用我的应用程序配置呢?我想将我的应用程序部署到客户端。我不确定是否可以更改他们的 maschine.config。
谢谢你的帮助
更新:我终于找到了一个可能的解释:当我嵌入配置时(我喜欢这样做,因为没有理由将配置文件放在 exe 旁边)它不起作用。但是,当我将配置类型更改为“无”并将它们放在 exe 旁边时,一切正常。
c# - 使用 DbConnection 而不先打开它
我正在使用 DbProviderFactories 提供的通用 DbConnection 访问数据库,并且我观察到在使用连接之前我不需要调用 Open 。我提供了一个有效的示例代码(使用“System.Data.SqlClient”或“Oracle.DataAccess.Client”作为 providerInvariantName 参数)。我已经使用类似的代码执行了所有 CRUD 操作,而没有在连接上显式调用 Open,没有任何明显的错误。
我知道我不需要关闭它,因为 using 语句负责关闭和处理连接。但是,什么时候在这段代码中打开连接呢?当我在关联的 DataAdapter 上调用 Fill 时,它会自动打开吗?在使用连接对象之前未在连接对象上显式调用 Open 是否有任何后果?因为如果它是不必要的,我可以为自己节省几行代码,我肯定会这样做。;-)
c# - 如何从 DbProviderFactories 中删除提供程序?
(配置:VS 2015 社区,Windows 10 64bit,.Net 4.6.1)
有一次我安装了
用于 PostgreSQL 的 Npgsql 数据提供程序 Npgsql Npgsql.NpgsqlFactory,Npgsql,版本=3.0.7.0,Culture=neutral,PublicKeyToken=5d8b90d52f46fda7 的 Npgsql 数据提供程序
被使用
DbProviderFactories.GetFactoryClasses()。
我现在正在尝试删除它。
我已经从项目的 App.config 中删除了所有连接字符串和 xml 元素。
从两者
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\CONFIG\machine.config
和
%SystemRoot%\Microsoft.NET\Framework64\v4.0.30319\CONFIG\machine.config
我删除了 DbProviderFactories 中的提供者声明
添加 name="Npgsql 数据提供程序" 不变="Npgsql" support="FF" 描述=".Net Framework Data Provider for Postgresql Server" type="Npgsql.NpgsqlFactory, Npgsql"
- 使用 gacutil /u npgsql,我从 GAC 中删除了所有 npgsql 引用:
gacutil /l Npgsql Microsoft (R) .NET 全局程序集缓存实用程序。版本 4.0.30319.0 版权所有 (c) Microsoft Corporation。版权所有。
全局程序集缓存包含以下程序集:
项目数 = 0
因此,从 machine.config、App.config 和 GAC 中删除 Npgsql 提供程序后,DbProviderFactories.GetFactoryClasses() 仍然报告:
用于 PostgreSQL 的 Npgsql 数据提供程序 Npgsql Npgsql.NpgsqlFactory,Npgsql,版本=3.0.7.0,Culture=neutral,PublicKeyToken=5d8b90d52f46fda7 的 Npgsql 数据提供程序
我还需要做什么来说服 DbProviderFactories Npgsql 不是提供者?
非常感谢您对此的任何帮助。
编辑#1:我永远无法“删除” Npgsql 提供程序,但使用 NET 4.5.2(而不是 NET 4.6.1)的目标框架重新构建确实解决了许多其他问题。
编辑#2:我需要回到这一点,但有趣的是 Visual Studio 2015 社区在 DbProvderFactories 上有自己的配置
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe.config