2014-11-16 29 views
1

엔터프라이즈 라이브러리 DAAB 6을 사용하고 있습니다. Oracle 데이터베이스와 통신하기 위해 EntLib Contrib 라이브러리를 사용하고 있습니다. 내가 NuGet을 사용하여 필요한 모든 패키지를 설치 한 엔터프라이즈 라이브러리 DAAB 6 및 ODP.NET - 기본 데이터베이스 'XXX'의 연결 문자열이 없습니다.

<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> 

처럼 내 응용 프로그램의

구성 파일을 찾습니다. 나는 또한 Oracle.DataAccess.dll 파일에 대한 참조를 추가 한

<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> 

: 같은 Package.Config 파일을 찾습니다.

나는 코드

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 

는 Oracle 데이터베이스에 대해 잘 작동 tnsping.

나는이 특정 오류 메시지를 봤지만,이 문제에 대한 해결책을 찾을 수 없습니다. 또한 Contrib 소스와 함께 제공되는 QuickStart 코드 샘플을 시도했습니다. 그것도 같은 오류 메시지를 생성합니다.

답변

1

DbProviderFactories가 Oracle 용으로 설정되지 않은 것처럼 들립니다.

<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 Configuration를 참조하십시오 ODP.NET를 설치할 때 일반적으로 기계 설정은 같은 업데이트 얻을 것이다. machine.config가 설정되어 있는지 확인합니다. app/web.config에 provderfactories를 설정할 수도 있습니다.