📄 nhibernatesessionmodule.cs
字号:
using System;
using System.Web;
using ExaminationSystem.DAL;
namespace ExaminationSystem.Web
{
/// <summary>
/// Implements the Open-Session-In-View pattern using <see cref="NHibernateSessionManager" />.
/// Assumes that each HTTP request is given a single transaction for the entire page-lifecycle.
/// Inspiration for this class came from Ed Courtenay at
/// http://sourceforge.net/forum/message.php?msg_id=2847509.
/// </summary>
public class NHibernateSessionModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(BeginTransaction);
context.EndRequest += new EventHandler(CommitAndCloseSession);
}
/// <summary>
/// Opens a session within a transaction at the beginning of the HTTP request.
/// This doesn't actually open a connection to the database until needed.
/// </summary>
private void BeginTransaction(object sender, EventArgs e)
{
NHibernateSessionManager.Instance.BeginTransaction();
}
/// <summary>
/// Commits and closes the NHibernate session provided by the supplied <see cref="NHibernateSessionManager"/>.
/// Assumes a transaction was begun at the beginning of the request; but a transaction or session does
/// not *have* to be opened for this to operate successfully.
/// </summary>
private void CommitAndCloseSession(object sender, EventArgs e)
{
try
{
NHibernateSessionManager.Instance.CommitTransaction();
}
finally
{
NHibernateSessionManager.Instance.CloseSession();
}
}
public void Dispose() { }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -