一步步學習NHibernate(2)——配置NHibernate的環境


請注明轉載地址: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。

wps_clip_image-20240

在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();

        }

運行一下程序,看看結果。

wps_clip_image-9060

看來,我們已經成功的配置了NHibernate的測試項目,並成功的打開數據庫和關閉數據庫了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM