-
我的MVC应用程序中的NHibernate初始化存在以下问题。
我发布了我的应用程序,并且我第一次在浏览器中打开它NHibernate初始化并且大约需要15分钟,但这是好的,因为它是第一次。当NHibernate初始化时,应用程序变得更快,并且它在这里和另一台计算机上正常运行。
问题是,当我打开应用程序大约1小时然后我再次尝试打开时,NHibernate再次初始化并且需要另外15分钟来初始化..
为什么会这样?我错过了什么吗?任何错误的配置?这是我与NHibernate的第一个项目,我真的没想到这个问题..
这是我的hibernate.cgf.xml:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="connection.connection_string">
Database=ucclinic;Data Source=rafael-ucase;User Id=root;Password=ucase
</property>
<property name="dialect">NHibernate.Dialect.MySQLDialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<mapping assembly="InstitutoDaDorMVC" />
</session-factory>
</hibernate-configuration>
这是我管理ISessionFactory的Singleton类:
public sealed class NHibernateHelper
{
private static readonly ISessionFactory sessionFactory;
static NHibernateHelper()
{
Configuration cfg = new Configuration();
cfg.Configure();
//new SchemaUpdate(cfg).Execute(false, true);
sessionFactory = cfg.BuildSessionFactory();
}
public static ISession GetSession()
{
ISession currentSession = null;
currentSession = sessionFactory.OpenSession();
return currentSession;
}
public static void CloseSession(ISession session)
{
if (session.IsOpen)
{
session.Close();
}
}
public static void CloseSessionFactory()
{
if (sessionFactory != null)
{
sessionFactory.Close();
}
}
}