我刚刚开始使用 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 会话工厂?
在业务层上,以便持久层将是独立的,或者,
在 MVC Web 项目的 Global.asax.cs 中做些什么?
每个我不知道的好处是什么?