2

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

我的解决方案由 2 个项目组成: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();
}

所以,我的问题是我必须在哪里实例化和初始化 NHibernate 会话工厂?

  1. 在业务层上,以便持久层将是独立的,或者,

  2. 在 MVC Web 项目的 Global.asax.cs 中做些什么?

    每个我不知道的好处是什么?

4

0 回答 0