之前一直是公司用NHibernate2.1來做項目,連接oracle 10g的數據庫,配置NHibernate的東西都是以前的同事做好了的,也怪自己太懶了,沒嘗試過配置這個東西,雖然一直在使用NHibernate做項目,前幾天突然有想法想用NHibernate自己做一個項目,才發現配置一個NHibernate並沒有想象中的簡單,前前后后大概花了五天時間,也算是功德圓滿,終於成功了!另外,網上找到的關於NHibernate的資料,大多數都是配置sql server數據庫的,關於oracle這方面的資料也是實在是少,以免大家少走彎路,寫個關於oracle的配置文章!
開發環境: visual studio 2017 Pro+oracle 11g(64bit)+NHibernate 4.0.0.4000
運行環境: windows 10 Pro (64bit)
一、前言
NHibernate是一個面向.NET環境的對象/關系數據庫映射工具。對象/關系數據庫映射(object/relational mapping,ORM)這個術語表示一種技術,用來把對象模型表示的對象映射到基於SQL的關系模型數據結構中去。
在項目中安裝NHibernate 4,我使用的是NuGet下載安裝到我的項目中的;
項目結構:
NuGet安裝NHibernate
第一步
第二步,在瀏覽下輸入你要添加的引用,在要添加引用的項目上打上勾
二、oracle配置
<?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory name="NHibernateConfig"> <!--此處需要使用oracle公司官網提供的客戶端驅動[我使用的版本為:32bit的ODTwithODAC112012.zip],微軟framework4.0之后就移除了oracle連接dll--> <property name="connection.driver_class">NHibernate.Driver.OracleClientDriver</property> <!--配置連接Oracle數據庫字符串--> <property name="connection.connection_string"> User ID=informix;Password=gmgl;Data Source=glxt </property> <!--輸出所有SQL語句到控制台--> <property name="show_sql">true</property> <!--dialect屬性支持的方言選項值--> <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property> <!--將Hibernate查詢中的符號映射到SQL查詢中的符號--> <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property> <mapping assembly="informix.Model" /><!--此處指向的是項目Model層的程序集--> </session-factory> </hibernate-configuration>
安裝好NHibernate之后,把E:\informix\packages\NHibernate.4.0.0.4000\ConfigurationTemplates下的Oracle.cfg.xml模板拷出來,然后放到你的Bin文件夾下,配置文件內容,如上,
特別需要注意的是屬性:
<property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
屬性dialect的值NHibernate.Dialect.Oracle10gDialect可以連接 oracle 10g,也可以連接oracle 11g的數據庫,這點跟java的Hibernate是一樣的
更多的屬性配置見鏈接 http://www.cnblogs.com/siyunianhua/p/6794016.html
三、 Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio(簡稱ODTwithODAC)安裝與visual studio 2017通過客戶端連接數據庫
ODAC簡介
ODAC 直接使用 Oracle 調用接口 (OCI). OCI 是一種允許應用程序開發人員使用第三方開發語言存取Oracle數據服務器的過程或函數以及控制所有的SQL語句執行狀態的應用程序接口(API)。OCI 通過一個動態運行庫(ORA*.DLL)提供了一個標准的數據庫存取庫及函數,以在應用程序中建立連接。也可以使用ODAC的Net選項而無需在客戶機上安裝Oracle客戶端來連接到Oracle.在這種情況下,ODAC僅需要TCP/IP協議的支持,從而可以創建真正的、最小的數據庫應用程序。
我使用的是32位的ODAC,如下
ODAC 11.2 第 2 版和 Oracle Developer Tools for Visual Studio (11.2.0.1.2) |
![]() |
下載文件 | |
![]() |
ODTwithODAC112012.zip 276 MB(289670995 字節) | |
ODAC 安裝說明 | ||
下載包括 |
||
![]() |
Oracle Developer Tools for Visual Studio 11.2.0.1.2 | |
![]() |
Oracle Data Provider for .NET 4 11.2.0.1.2 | |
![]() |
Oracle Data Provider for .NET 2.0 11.2.0.1.2 | |
![]() |
Oracle Providers for ASP.NET 4 11.2.0.1.2 | |
![]() |
Oracle Providers for ASP.NET 2.0 11.2.0.1.2 | |
![]() |
Oracle Database Extensions for .NET 4 11.2.0.1.2 — 僅用於升級 | |
![]() |
Oracle Database Extensions for .NET 2.0 11.2.0.1.2 — 僅用於升級 | |
![]() |
Oracle Provider for OLE DB 11.2.0.1.0 | |
![]() |
Oracle Objects for OLE 11.2.0.1.0 | |
![]() |
Oracle Services for Microsoft Transaction Server 11.2.0.1.0 | |
![]() |
Oracle ODBC Driver 11.2.0.1.0 | |
![]() |
Oracle SQL*Plus 11.2.0.1.0 | |
![]() |
Oracle Instant Client 11.2.0.1.0 |
到oracle 官網下載一個oracle 11g對應64位的ODAC安裝包,安裝好之后,要讓這個客戶端能連接上數據庫
把 客戶端下的 product\11.2.0\client_1\Network\Admin\Sample下的兩個文件 sqlnet.ora 和 tnsnames.ora,復制到它的上一層文件夾下,如圖,
<一>
用記事本打開Admin下的 tnsnames.ora文件,修改端口為1521,修改實例名,和localhost,如圖
修改了完之后,重啟計算機。
使用visual studio 2017 通過oracle客戶端連接數據庫
打開工具/連接數據庫
選擇oracle數據庫,然后確定
彈出下面那個文本框,輸入你的數據庫連接信息之后,點擊測試鏈接,提示成功之后,就可以了
一切准備就緒之后,你需要在NHibernate的配置處理類中添加Oracle.DataAccess引用,然后一切都大功告成了!
資料:
http://www.cnblogs.com/lhking/p/3930711.html
http://blog.csdn.net/fjfdszj/article/details/6637998
https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/Driver/OracleManagedDataClientDriver.cs
如果有任何疑問,可以聯系我的qq:364131167