7

I am trying to use Nhibernate with Oracle using Microsoft's System.Data.OracleClient

Nhibernate Configuration (Is it correct for 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>

Its throwing 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. 

I tried copying System.Data.OracleClient.dll to output bin directory. It didn't help. I also tried copying Oracle Client dlls to output bin directory. It also didn't help.

Exception says 'Oracle.DataAccess' assembly not found. But there is no such assembly inside Microsoft's System.Data.OracleClient. Is it searching for Oracle's ODP Drivers ?

Edit: If above Configuration is wrong , help me by posting Configuration for System.Data.OracleClient

1
  • The Microsoft Oracle driver doesn't use any indexes you may have on your tables. Not recommended. Commented Oct 3, 2011 at 11:04

2 Answers 2

13

This line in your configuration:

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

is instructing NHibernate to use the ODP.NET drivers found in Oracle.DataAccess.dll . This allows NHibernate to make use of ODP.NET features such as Connection Pool and tracing. Depending on the version of Oracle client software installed, you should find a copy of this assembly somewhere like C:\Oracle\product\10.1.0\Client_1\BIN\

If you would prefer to use Microsoft's System.Data.OracleClient driver instead, change this line to:

  <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property>
Sign up to request clarification or add additional context in comments.

Comments

3

Using the microsoft oracle driver will slow down your performance by a lot.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.