C# DBProviderFactorys中未列出Oracle数据提供程序(ODP.NET)
我想使用DbProvider类来构造一个通用的DAL组件。在不同的数据库提供程序之间切换时,这将非常方便。 在安装了Oracle 2.2的计算机上,尝试列出该计算机上所有可用的数据库提供程序时,未列出Oracle提供程序ODP.NETC# DBProviderFactorys中未列出Oracle数据提供程序(ODP.NET),c#,database,oracle,C#,Database,Oracle,我想使用DbProvider类来构造一个通用的DAL组件。在不同的数据库提供程序之间切换时,这将非常方便。 在安装了Oracle 2.2的计算机上,尝试列出该计算机上所有可用的数据库提供程序时,未列出Oracle提供程序ODP.NET DataTable dtable = DbProviderFactories.GetFactoryClasses(); 尽管引用Oracle.DataAccess.dll并使用OracleConnection类连接到Oracle并不是问题 OracleCo
DataTable dtable = DbProviderFactories.GetFactoryClasses();
尽管引用Oracle.DataAccess.dll并使用OracleConnection类连接到Oracle并不是问题
OracleConnection con = new OracleConnection();
我做错了什么
编辑:
根据这一点,我应该会在列表中看到“Oracle Data Provider for.Net”。执行代码时,我会在我的数据表中看到以下行:
OracleClient Data Provider .Net Framework Data Provider for Oracle
System.Data.OracleClient System.Data.OracleClient.OracleClientFactory,
System.Data.OracleClient, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
System.Data.OracleClient应该在.NET Framework 2.0之后的GAC中以下是DbProviderFactorys.GetFactoryClasses的工作原理 默认情况下,(如果您没有app.config),它将在machine.config中查找名为system.data/dbProviderFactorys的部分。基本上,可以在该部分找到所有可访问的“注册”db提供程序 因此,将其添加到app.config system.data/dbProviderFactorys部分或machine.config 比如:
<configuration>
<system.data>
<DbProviderFactories>
<add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
</configuration>
并确保您的ODP.NET版本支持DbProviderFactorys。我认为您需要Oracle Database 10g Release 2才能做到这一点