簡體   English   中英

企業庫DAAB 6和ODP.NET-默認數據庫“ XXX”的連接字符串不存在

[英]Enterprise Library DAAB 6 and ODP.NET - Connection string for the default database 'XXX' does not exist

我正在使用企業庫DAAB6。為了與Oracle數據庫進行通信,我正在使用EntLib Contrib庫。

我的應用程序的配置文件如下所示

<configuration>
    <configSections>
        <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
    </configSections>
    <dataConfiguration defaultDatabase="OracleConnectionString">
        <providerMappings>
            <add databaseType="EntLibContrib.Data.OdpNet.OracleDatabase, EntLibContrib.Data.OdpNet, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null"
                name="Oracle.DataAccess.Client" />
        </providerMappings>
    </dataConfiguration>
    <connectionStrings>
        <add name="OracleConnectionString" connectionString="Data Source=localhost:1521/dev;User ID=db_owner;Password=admin;"
            providerName="Oracle.DataAccess.Client" />
    </connectionStrings>
<configuration>

我已經使用NuGet安裝了所有必需的軟件包。 Package.Config文件如下所示:

<packages>
    <package id="EnterpriseLibrary.Common" version="6.0.1304.0" targetFramework="net45" />
    <package id="EnterpriseLibrary.Data" version="6.0.1304.0" targetFramework="net45" />
    <package id="EntLibContrib.Data.OdpNet" version="6.0.1304.0" targetFramework="net45" />
</packages>

我還添加了對Oracle.DataAccess.dll文件的引用。

我使用以下代碼行連接到數據庫

var database = new DatabaseProviderFactory().CreateDefault();

上面的行生成一個非常奇怪的錯誤消息。 完整的堆棧跟蹤如下所示:

System.InvalidOperationException: The connection string for the default database 'OracleConnectionString' does not exist or does not have a valid provider. 
---> System.Configuration.ConfigurationErrorsException: The requested database OracleConnectionString does not have a valid ADO.NET provider name set in the connection string. (C:\Test\OraConsole\bin\Debug\OraConsole.vshost.exe.Config line 13)
   at Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSyntheticConfigSettings.GetDatabase(String name)
   at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseProviderFactory.DatabaseConfigurationBuilder.<CreateDefault>b__2(String n)
   --- End of inner exception stack trace ---
   at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseProviderFactory.DatabaseConfigurationBuilder.<CreateDefault>b__2(String n)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseProviderFactory.DatabaseConfigurationBuilder.CreateDefault()
   at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseProviderFactory.CreateDefault()
   at Data.OdpNet.QuickStarts.Console.Program.Main(String[] args) in c:\Test\OraConsole\Program.cs:line 15

tnsping對於Oracle數據庫運行良好。

我已經用谷歌搜索了這個特定的錯誤消息,但是我找不到這個問題的解決方案。 我還嘗試了Contrib源提供的QuickStart代碼示例。 它也會生成相同的錯誤消息。

聽起來好像沒有為Oracle設置DbProviderFactories。 通常,在安裝ODP.NET時,計算機配置將使用以下內容進行更新:

<system.data>
    <DbProviderFactories>
      <add name="Oracle Data Provider for .NET Version 11.1.0.6.0"
           invariant="Oracle.DataAccess.Client Version 11.1.0.6.0"
           description="Oracle Data Provider for .NET Version 11.1.0.6.0"
           type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess,
           Version=2.111.6.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
</system.data>

請參閱ODP.NET配置 我會驗證machine.config是否已安裝。 您還可以在您的app / web.config中設置生產廠商。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM