請注明轉載地址:http://www.cnblogs.com/arhat
第二章 環境搭建
在上一章中,我們知道了NHibernate是用來干什么的了,那么今天在本章中,我們開始搭建NHibernate的運行環境,在講述NHibernate的時候,我們采用C#控制台應用程序來講解,等到后面的時候,我們使用ASP.NET MVC和NHibernate的結合來開發項目。在以前,老魏寫過一個《ASP.NET MVC NHibernate 整合》,這篇文章老魏寫的有問題,有其事Nhibernate的GetCurrentSession的問題,那么老魏在講解NHibernate的時候會專門來講解這個只是,同時更改一下《ASP.NET MVC NHibernate 整合》的內容。
首先我們得進入到NHibernate的官方網站下載NHibernate的必要文件,地址:http://nhforge.org/大家可以自行下載。這里呢,老魏使用的是NHibernate-3.2.0,數據庫使用的是MySQL。
首先我們建立一個空的解決方案“NHibernateStudy”,在解決方案中我們創建兩個項目,一個是c#控制台應用程序NHibernateTest,另外一個是C#類庫DAL。
在NHibernateTest中,我們添加一個應用程序配置文件App.config。順便添加NHibernateTest對DAL的應用。我們在DAL中添加NHibernate的兩個必要dll文件“Iesi.Collections.dll”,“NHibernate.dll”文件,並生成以下解決方案。
更改App.config文件,內容如下:
<configSections> <!--聲明NHibernate的配置節點--> <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> </configSections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <!--SessionFactory的配置--> <session-factory> <!--方言用的是Mysql--> <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property> <!--是否顯示sql語句--> <property name="show_sql">true</property> <!--使用NHibernate提供的MySql驅動--> <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property> <!--鏈接字符串--> <property name="connection.connection_string">persistsecurityinfo=True;server=127.0.0.1;user id=root;password=symjie;database=school</property> </session-factory> </hibernate-configuration>
其中在這個配置文件中出現了一個非常重要的SessionFactory的配置,這個配置對應着一個對象”SessionFactory”,這個對象是會話工廠,提供一個有效的會話鏈接。這一點在后面的代碼中,老魏講詳細的說明。
然后我們在DAL項目中,創建一個NHibernateHelper.cs文件,內容如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate.Cfg; using NHibernate; namespace DAL { public class NHibernateHelper { //會話工廠 public static ISessionFactory factory = null; static NHibernateHelper() { //讀取配置文件,根據配置文件創建一個會話工廠,而這個就是從<session-factory>節點中讀取的信息 factory = new Configuration().Configure().BuildSessionFactory(); } //定義一個打開數據庫鏈接的方法 public static ISession OpenSession() { //通過工廠打開一個Session(會話) return factory.OpenSession(); } } }
在這個類中,我們出現了兩個接口,ISessionFactory和ISession,其中ISessionFactory是一個會話工廠,用於提供數據庫鏈接會話的創建。ISession是表示一個數據庫鏈接的會話,這里我們可以認為是一個數據庫鏈接相當於ADO.NET 中的Connection,但是實際上ISession的功能比Connection要強大的多。
我們在DAL中,創建一個測試文件“Test.cs”內容如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NHibernate; namespace DAL { public class Test { public void TestConnection() { ISession session = NHibernateHelper.OpenSession(); using (session) { Console.WriteLine("是否已經打開數據庫鏈接?" + session.IsOpen); } Console.WriteLine("數據庫是否已經關閉鏈接?" + session.IsOpen); } } }
然后更改一下NHibernateTest項目中的Program.cs文件,在主函數中創建Test類,並調用Test類的TestConnection方法來測試一下數據庫是否打開。
static void Main(string[] args) { DAL.Test test = new DAL.Test(); test.TestConnection(); }
運行一下程序,看看結果。
看來,我們已經成功的配置了NHibernate的測試項目,並成功的打開數據庫和關閉數據庫了。


