2012-01-05 4 views
0

Я следую за шаблоном запроса. Для управления ISessionFactory я использовать поточно-singletone:asp.net Управление сеансом Nhibernate

public class SessionManager 
    { 
     private static readonly ILog Log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
     private readonly ISessionFactory sessionFactory; 
     public static ISessionFactory SessionFactory 
     { 
      get { return Instance.sessionFactory; } 
     } 
     private ISessionFactory GetSessionFactory() 
     { 
      return sessionFactory; 
     } 
     public static ISession OpenSession() 
     { 
      return Instance.GetSessionFactory().OpenSession(); 
     } 
     public static ISession CurrentSession 
     { 
      get 
      { 
       if (!CurrentSessionContext.HasBind(Instance.GetSessionFactory())) 
        return null; 
       return Instance.GetSessionFactory().GetCurrentSession(); 
      } 
     } 


     public static SessionManager Instance 
     { 
      get 
      { 
       return NestedSessionManager.sessionManager; 
      } 
     } 
     private SessionManager() 
     { 
      Log.Info("Start creating factory"); 
      Configuration configuration = new Configuration().Configure(); 
      sessionFactory = configuration.BuildSessionFactory(); 
      Log.Info("End creating factory"); 

     } 

     class NestedSessionManager 
     { 
      internal static readonly SessionManager sessionManager = 
       new SessionManager(); 
     } 
    } 

Как я понимаю, что создать завод один раз для всех пользовательских запросов, но я вижу в моих журналах, что моя фабрика воссоздает каждые 15-45 минут. Это constucting занимает много времени, поэтому у меня медленная загрузка приложения.

Что не так в моих мыслях?

ответ

3

Возможно, произойдет несколько событий, которые могут перезапустить приложение. Вы уверены, что ничего из these не происходит?

Смежные вопросы