我正在尝试使用Microsoft的System.Data.OracleClient将Nhibernate与Oracle一起使用
Nhibernate配置(Microsoft驱动程序是否正确?)
<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.
我尝试将System.Data.OracleClient.dll复制到输出bin目录。它没有帮助。 我还尝试将Oracle Client dll复制到输出bin目录。它也没有帮助。
Exception表示未找到“Oracle.DataAccess”程序集。但是在Microsoft的System.Data.OracleClient中没有这样的程序集。它是在搜索Oracle的ODP驱动程序吗?
编辑:如果上面的配置错误,请通过发布System.Data.OracleClient的配置来帮助我
答案 0 :(得分:13)
配置中的这一行:
<property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
指示NHibernate使用Oracle.DataAccess.dll中的ODP.NET驱动程序。 这允许NHibernate利用连接池和跟踪等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>
答案 1 :(得分:3)
使用microsoft oracle驱动程序会大大降低性能。