以下是我們項目的更新的地方:
先看一下程式結構的截圖:
問題一:關于hibernate.cfg.xml配置檔案。
檔案名稱必須是hibernate.cfg.xml 。Nhibernate自動到項目輸出中查找此檔案。必須将此檔案的屬性設定為始終複制。
問題二:在webconfig中配置Nhibernate,不使用單獨的:hibernate.cfg.xml
在webconfig中配置Nhibernate是我們另外一種配置方式。格式如下:
代碼
<?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實作】
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的一個小小的更新!