2009-03-18 18 views
7

Sto cercando di usare NHibernate con Oracle utilizzando Microsoft System.Data.OracleClientNHibernate con Microsoft System.Data.OracleClient

configurazione NHibernate (è corretto per Microsoft driver?)

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

suo lancio Eccezione,

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. 

Ho provato a copiare System.Data.OracleClient.dll nella directory bin di output. Non ha aiutato. Ho anche provato a copiare le DLL di Oracle Client nella directory bin di output. Inoltre non ha aiutato.

L'eccezione indica che l'assembly 'Oracle.DataAccess' non è stato trovato. Ma non esiste un tale assembly all'interno di System.Data.OracleClient di Microsoft. Sta cercando i driver ODP di Oracle?

Edit: Se sopra configurazione è sbagliato, mi aiuti con la pubblicazione di configurazione per System.Data.OracleClient

+0

Il driver Microsoft Oracle non utilizza alcun indice presente sulle tabelle. Non consigliato. –

risposta

13

Questa linea nella configurazione:

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

sta istruendo NHibernate utilizzare ODP. Driver NET trovati in Oracle.DataAccess.dll. Ciò consente a NHibernate di utilizzare le funzionalità ODP.NET come Pool di connessioni e traccia. A seconda della versione del software client Oracle installato, dovresti trovare una copia di questo assembly da C: \ Oracle \ product \ 10.1.0 \ Client_1 \ BIN \

Se preferisci usare System.Data di Microsoft autista .OracleClient invece, cambiare questa linea a:

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

Utilizzando il driver Oracle Microsoft rallentare le prestazioni da un sacco.

Problemi correlati