using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using FluentNHibernate;
using FluentNHibernate.Automapping;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Context;
using NHibernate.Tool.hbm2ddl;
namespace ShareFiles.WebUI
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
public static ISessionFactory SessionFactory = CreateSessionFactory();
/// <summary>
/// Builds SessionFactory
/// Sets the class stub for CreateMappings
/// Creates the class stub for BuidSchema
/// </summary>
/// <returns></returns>
private static ISessionFactory CreateSessionFactory()
{
const string boxConnString = "ShareFilesConnectionString";
PersistenceModel model = CreateMappings();
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c => c.FromConnectionStringWithKey(boxConnString)))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
/// <summary>
/// Creates Mappings class
/// </summary>
/// <returns></returns>
private static PersistenceModel CreateMappings()
{
return AutoMap
.Assembly(System.Reflection.Assembly.GetCallingAssembly())
.Where(t => t.Namespace == "ShareFiles.Data");
}
/// <summary>
/// Builds Schema
/// </summary>
/// <param name="config"></param>
private static void BuildSchema(Configuration config)
{
new SchemaExport(config).Create(false, true);
}
/// <summary>
/// Initializes Session
/// </summary>
/// <returns></returns>
public static ISession GetCurrentSession()
{
return SessionFactory.GetCurrentSession();
}
/// <summary>
/// Begins Session Factory
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void ContextBeginRequest(object sender, EventArgs e)
{
ISession session = SessionFactory.OpenSession();
session.BeginTransaction();
CurrentSessionContext.Bind(session);
}
private static ISession BeginSession(ISessionFactory sessionFactory)
{
var session = SessionFactory.OpenSession();
session.BeginTransaction();
return session;
}
/// <summary>
/// Ends Session Factory
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void EndSession(ISession session)
{
if (session.Transaction != null && session.Transaction.IsActive)
{
session.Transaction.Commit();
}
session.Dispose();
}
/// <summary>
/// begins the Global Assembly
/// </summary>
/// <param name="filters"></param>
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
No comments:
Post a Comment