我想使用DbProvider类来构造一个通用的DAL组件。当在不同的数据库提供程序之间切换时,这将是方便的。在安装了Oracle2.2的计算机上,当尝试列出计算机上所有可用的数据库提供程序时,不会列出Oracle provider ODP.NET。
DataTable dtable = DbProviderFactories.GetFactoryClasses();尽管引用Oracle.DataAccess.dll并使用OracleConnection类连接到Oracle是没有问题的。
OracleConnection con = new OracleConnection();我在这里做错了什么?
编辑:根据这个page,我应该在列表中看到一个"Oracle for .Net“。
发布于 2009-07-11 20:32:02
下面是DbProviderFactories.GetFactoryClasses的工作原理。
默认情况下(如果您没有app.config),它将在您的machine.config中查找名为system.data/DBProviderFacilds节。基本上,所有可访问的“已注册”数据库提供程序都可以在该部分找到。
因此,要么将其添加到您的app.config system.data/DBProviderFacild节中,要么添加到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版本支持DbProviderFactories。我认为您需要Oracle数据库10g第2版才能做到这一点。
发布于 2009-07-11 20:18:26
执行您的代码时,我在datatable中看到以下行:
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从.NET Framework2.0开始,您的GAC中应该包含System.Data.OracleClient
https://stackoverflow.com/questions/1114539
复制相似问题