MVC 4 App中的NHibernate初始化

时间:2013-08-30 17:21:28

标签: c# asp.net-mvc nhibernate initialization

编辑:进行一些测试我注意到这个问题正在发生,因为服务器在一段时间后将我的应用程序从内存中取出..而且我没有访问服务器而且也无法更改任何配置。任何人都知道我可以通过代码解决这个问题吗?

-

我的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();
            }
        }
    }

0 个答案:

没有答案