2009-03-18 4 views
7

Je suis en train d'utiliser Nhibernate avec Oracle à l'aide de Microsoft System.Data.OracleClientNhibernate avec Microsoft System.Data.OracleClient

Nhibernate Configuration (Est-il correct pour Microsoft pilote?)

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

Son lancement Exception,

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. 

J'ai essayé de copier System.Data.OracleClient.dll pour afficher le répertoire bin. Cela n'a pas aidé. J'ai également essayé de copier des dll Oracle Client pour afficher le répertoire bin. Cela n'a pas aidé non plus.

Une exception indique que l'assembly 'Oracle.DataAccess' est introuvable. Mais il n'y a pas un tel assembly dans System.Data.OracleClient de Microsoft. Est-ce qu'il recherche des pilotes ODP d'Oracle?

Edit: Si ci-dessus La configuration est mauvaise, me aider en affichant la configuration pour System.Data.OracleClient

+0

Le pilote Microsoft Oracle n'utilise pas les index que vous pouvez avoir sur vos tables. Non recommandé. –

Répondre

13

Cette ligne dans votre configuration:

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

est d'utiliser NHibernate d'instruire l'ODP. Pilotes NET trouvés dans Oracle.DataAccess.dll. Cela permet à NHibernate d'utiliser les fonctionnalités ODP.NET telles que le pool de connexions et le suivi. Selon la version du logiciel client Oracle installé, vous devriez trouver une copie de cet assembly quelque part comme C: \ Oracle \ product \ 10.1.0 \ Client_1 \ BIN \

Si vous préférez utiliser Microsoft System.Data au lieu pilote .OracleClient, changer cette ligne:

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

Utilisation du pilote Oracle Microsoft va ralentir votre performance par beaucoup.