2009-07-11 77 views
1

我想使用DbProvider類構造通用DAL組件。在不同的數據庫提供者之間切換時,這將很方便。 在安裝了Oracle 2.2的計算機上,嘗試列出機器上可用的所有數據庫提供程序時,未列出Oracle提供程序ODP.NET。未在DbProviderFactories中列出的Oracle數據提供者(ODP.NET)

DataTable dtable = DbProviderFactories.GetFactoryClasses(); 

儘管引用Oracle.DataAccess.dll並使用OracleConnection類連接到Oracle並沒有問題。

OracleConnection con = new OracleConnection(); 

我在做什麼錯在這裏?

編輯: 根據這一page我應該在列表中看到的「爲.NET Oracle數據提供者」。

回答

2

這裏是如何DbProviderFactories.GetFactoryClasses作品...

默認情況下(如果您沒有app.config),它將在machine.config中查找名爲system.data/DBProviderFactories的部分。基本上所有可以訪問的「註冊」數據庫提供者都可以在該部分找到。

因此,將其添加到您的app.config system.data/DBProviderFactories部分或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版來執行此操作。

0

執行你的代碼我看到下面的一行在我的數據表:

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的應該是你的GAC作爲.NET框架2.0

相關問題