天天看點

Nhibernate入門與demo 更新版

以下是我們項目的更新的地方:

先看一下程式結構的截圖:

Nhibernate入門與demo 更新版

問題一:關于hibernate.cfg.xml配置檔案。

檔案名稱必須是hibernate.cfg.xml 。Nhibernate自動到項目輸出中查找此檔案。必須将此檔案的屬性設定為始終複制。

問題二:在webconfig中配置Nhibernate,不使用單獨的:hibernate.cfg.xml

在webconfig中配置Nhibernate是我們另外一種配置方式。格式如下:

Nhibernate入門與demo 更新版
Nhibernate入門與demo 更新版

代碼

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<!-- Add this element -->

<configSections>

<section

name="hibernate-configuration"

type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"

/>

</configSections>

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">

<session-factory>

<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>

<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>

<property name="connection.connection_string">

Server=(local);initial catalog=hkTemp;Integrated Security=SSPI

</property>

<mapping assembly="NhibernateDemo" />

</session-factory>

</hibernate-configuration>

<!-- Leave the system.web section unchanged -->

<system.web>

...

</system.web>

</configuration>

解釋:NHibernate通過方言(dialect)區分 我們配置的是使用 Microsoft SQL Server 2005資料庫并且通過指定的連接配接字元串連接配接資料庫

問題三:sessionFactory 是針對一個資料庫,是以我們可以采用單例模式來實作一個NhibernateHelper。看下面代碼【這是官方給的NhibernateHelper實作】

Nhibernate入門與demo 更新版
Nhibernate入門與demo 更新版

public sealed class NhibernateHelper

{

private const string CurrentSessionKey = "nhibernate.currentsession";

private static readonly ISessionFactory sessionFactory;

static NhibernateHelper()

Configuration cfg = new Configuration();

sessionFactory = new Configuration().Configure().BuildSessionFactory();

}

public static ISession GetCurrentSession()

HttpContext context = HttpContext.Current;

ISession currentSession = context.Items[CurrentSessionKey] as ISession;

if (currentSession == null)

currentSession = sessionFactory.OpenSession();

context.Items[CurrentSessionKey] = currentSession;

return currentSession;

public static void CloseSession()

// No current session

return;

currentSession.Close();

context.Items.Remove(CurrentSessionKey);

public static void CloseSessionFactory()

if (sessionFactory != null)

sessionFactory.Close();

上面NhibernateHelper不報錯的基礎是:你在webconfig中正确配置Nhibernate或者添加了hibernate.cfg.xml配置檔案。【注意檔案名必須是這個】

這樣實作後我們的調用代碼就變得簡單多了,看一下代碼

ISession session = NhibernateHelper.GetCurrentSession();

//.....User 初始化

session.Save(User);

session.Delete(User);

session.Update(User);

以上是簡單的這個demo的一個小小的更新!