2009-03-18 19 views
7

Tôi cố gắng để sử dụng Nhibernate với Oracle sử dụng System.Data.OracleClient của MicrosoftNhibernate với Microsoft System.Data.OracleClient

Nhibernate Cấu hình (Is it correct cho 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> 

ném nó Ngoại lệ,

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. 

Tôi đã thử sao chép System.Data.OracleClient.dll vào thư mục bin đầu ra. Nó không giúp được gì. Tôi cũng đã thử sao chép Oracle Client dlls vào thư mục bin đầu ra. Nó cũng không giúp được gì.

Ngoại lệ cho biết cụm từ 'Oracle.DataAccess' không tìm thấy. Nhưng không có lắp ráp như vậy bên trong System.Data.OracleClient của Microsoft. Nó đang tìm kiếm trình điều khiển ODP của Oracle?

Edit: Nếu trên cấu hình là sai, giúp tôi bằng cách đăng Cấu hình cho System.Data.OracleClient

+0

Trình điều khiển Microsoft Oracle không sử dụng bất kỳ chỉ mục nào bạn có thể có trên các bảng của mình. Không được khuyến khích. –

Trả lời

13

Dòng này trong cấu hình của bạn:

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

được hướng dẫn NHibernate để sử dụng ODP. Trình điều khiển NET được tìm thấy trong Oracle.DataAccess.dll. Điều này cho phép NHibernate sử dụng các tính năng ODP.NET như kết nối Pool và truy tìm. Tùy thuộc vào phiên bản phần mềm máy khách Oracle được cài đặt, bạn nên tìm bản sao của bản lắp ráp này ở đâu đó như C: \ Oracle \ product \ 10.1.0 \ Client_1 \ BIN \

Nếu bạn muốn sử dụng System.Data của Microsoft Thay vào đó, hãy thay đổi dòng này thành:

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

Sử dụng trình điều khiển oracle microsoft sẽ làm chậm hiệu suất của bạn nhiều.

Các vấn đề liên quan