Asp.net mvc 3 MVC FluentNhibernate在何处创建ISessionFactory

Asp.net mvc 3 MVC FluentNhibernate在何处创建ISessionFactory,asp.net-mvc-3,fluent-nhibernate,Asp.net Mvc 3,Fluent Nhibernate,我刚刚开始使用ASP.NET MVC 3学习FluentNhibernate,所以如果这个问题听起来很愚蠢或者我不够清楚,请原谅 我的解决方案由两个项目组成:Web界面和业务层。下面是初始化NHibernate会话工厂的代码块: public static ISessionFactory SessionFactory { get; private set; } public static ISessionFactory SessionFactory { get {

我刚刚开始使用ASP.NET MVC 3学习FluentNhibernate,所以如果这个问题听起来很愚蠢或者我不够清楚,请原谅

我的解决方案由两个项目组成:Web界面和业务层。下面是初始化NHibernate会话工厂的代码块:

public static ISessionFactory SessionFactory { get; private set; }

public static ISessionFactory SessionFactory
{
    get
    {
        if (_sessionFactory == null) InitializeSessionFactory();
        return _sessionFactory;
    }
}

public static void InitializeSessionFactory()
{
    SessionFactory = Fluently.Configure()
    .Database(MsSqlConfiguration.MsSql2008
    .ConnectionString(m => m.FromConnectionStringWithKey("connString")).ShowSql())
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<MySampleObjectMap>())
    .ExposeConfiguration(c => c.SetProperty("current_session_context_class", "web"))
    .BuildSessionFactory();
}

public static ISession OpenSession()
{
    return SessionFactory.OpenSession();
}
公共静态ISessionFactory会话工厂{get;private set;}
公共静态ISessionFactory会话工厂
{
得到
{
如果(_sessionFactory==null)初始化sessionFactory();
返回工厂;
}
}
公共静态无效初始化SessionFactory()
{
SessionFactory=fluntly.Configure()
.数据库(MsSqlConfiguration.MsSql2008
.ConnectionString(m=>m.FromConnectionStringWithKey(“connString”)).ShowSql()
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.ExposeConfiguration(c=>c.SetProperty(“当前会话上下文类”、“web”))
.BuildSessionFactory();
}
公共静态会话OpenSession()
{
返回SessionFactory.OpenSession();
}
所以,我的问题是,我必须在哪里实例化和初始化NHibernate会话工厂

  • 在业务层上,使持久性层分离,或者

  • 你在MVC Web项目的Global.asax.cs中做什么

    我不知道每种方法的好处是什么