2009-03-18 2 views
7

(이 올바른 마이크로 소프트 드라이버에 대한인가?)NHibernate에 마이크로 소프트의 System.Data.OracleClient 내가 오라클은 마이크로 소프트의 System.Data.OracleClient에</p> <p>NHibernate에 구성을 사용하여 자 NHibernate를 사용하는 것을 시도하고있다

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="show_sql">true</property> 
     <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property> 
     <property name="cache.use_second_level_cache">true</property> 
     <property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property> 
     <property name="cache.use_query_cache">true</property> 
     <property name="dialect">NHibernate.Dialect.Oracle9Dialect</property> 
     <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property> 
     <property name="connection.connection_string">Data Source=localhost;User Id=jbadmin;Password=justbooks12;Integrated Security=no;</property> 
    </session-factory> 
    </hibernate-configuration> 

그것의 던지기와 예외,

The IDbCommand and IDbConnection implementation in the assembly Oracle.DataAccess could not be found. Ensure that the assembly Oracle.DataAccess is located in the application directory or in the Global Assembly Cache. If the assembly is in the GAC, use <qualifyAssembly/> element in the application configuration file to specify the full name of the assembly. 

출력 bin 디렉토리로 System.Data.OracleClient.dll을 복사 해 보았습니다. 도움이되지 않았다. 또한 오라클 클라이언트 dll을 출력 bin 디렉토리에 복사 해 보았습니다. 그것은 또한 도움이되지 못했습니다.

예외로 'Oracle.DataAccess'어셈블리를 찾을 수 없습니다. 그러나 Microsoft의 System.Data.OracleClient에는 이러한 어셈블리가 없습니다. 오라클의 ODP 드라이버를 찾고 있습니까?

편집 : 구성이 잘못 위의 경우 구성에서의 System.Data.OracleClient

에 대한
+0

Microsoft Oracle 드라이버는 테이블에있을 수있는 인덱스를 사용하지 않습니다. 권장하지 않습니다. –

답변

13

이 라인을 구성 게시하여 도와 :

<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property> 

가 NHibernate에가 ODP를 사용하도록 지시한다. NET 드라이버는 Oracle.DataAccess.dll에 있습니다. 이것은 NHibernate가 Connection Pool과 tracing과 같은 ODP.NET 기능을 사용할 수있게 해줍니다. 설치된 Oracle 클라이언트 소프트웨어의 버전에 따라 C : \ Oracle \ product \ 10.1.0 \ Client_1 \ BIN \

과 같은 어딘가에이 어셈블리 복사본을 찾아야합니다. Microsoft의 System.Data .OracleClient 드라이버 대신 다음 행을 변경하십시오.

<property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> 
3

Microsoft oracle 드라이버를 사용하면 성능이 많이 저하됩니다.

관련 문제