2009-03-18 11 views
7

Estoy tratando de utilizar Nhibernate con Oracle utilizando System.Data.OracleClient de MicrosoftNhibernate con Microsoft System.Data.OracleClient

configuración Nhibernate (¿Es correcto para Microsoft controlador?)

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

Su lanzamiento excepción,

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. 

he intentado copiar System.Data.OracleClient.dll al directorio de la bandeja de salida. No ayudó. También intenté copiar dlls de Oracle Client en el directorio bin de salida. Tampoco ayudó.

La excepción dice que no se encontró el ensamblado 'Oracle.DataAccess'. Pero no existe tal ensamblado dentro de System.Data.OracleClient de Microsoft. ¿Está buscando los controladores ODP de Oracle?

Editar: Si por encima de la configuración es incorrecta, me ayude mediante la publicación de configuración para System.Data.OracleClient

+0

El controlador Microsoft Oracle no usa ningún índice que pueda tener en sus tablas. No recomendado. –

Respuesta

13

esta línea en su configuración:

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

consiste en instruir a NHibernate para utilizar el PAO. Los controladores NET encontrados en Oracle.DataAccess.dll. Esto permite a NHibernate hacer uso de las características de ODP.NET, como el grupo de conexiones y el seguimiento. Dependiendo de la versión del software cliente de Oracle instalado, debería encontrar una copia de este ensamblado en algún lugar como C: \ Oracle \ producto \ 10.1.0 \ Client_1 \ BIN \

Si prefiere usar el System.Data de Microsoft .OracleClient controlador en lugar, cambie esta línea a:

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

Uso del controlador de Oracle Microsoft ralentizar el rendimiento por mucho.

Cuestiones relacionadas