public LazySessionFactory(ISessionFactoryInitializion sessionFactoryInitializion)
        {
            if (sessionFactoryInitializion == null)
            {
                throw new ArgumentNullException("sessionFactoryInitializion");
            }
            if (sessionFactoryInitializion.ConfigurationProvider == null)
            {
                throw new ArgumentException("ConfigurationProvider cannot be null.", "sessionFactoryInitializion");
            }

            _sessionFactory = new Lazy <ISessionFactory>(() => InitializeSessionFactory(sessionFactoryInitializion.ConfigurationProvider, sessionFactoryInitializion.OnInitialized));
            _defaultCurrentSessionContextBinder = new Lazy <ICurrentSessionContextBinder>(() => GetCurrentSessionContextBinder(Value));

            switch (sessionFactoryInitializion.InitializationMode)
            {
            case SessionFactoryInitializationMode.Eager:
                Value = _sessionFactory.Value;
                break;

            case SessionFactoryInitializationMode.Background:
                initializeInBackground(sessionFactoryInitializion);
                break;
            }
        }
 void initializeInBackground(ISessionFactoryInitializion sessionFactoryInitializion)
 {
     ValueCreationTask = Task.Factory.StartNew(() =>
     {
         try
         {
             Value = _sessionFactory.Value;
         }
         catch (Exception exception)
         {
             if (sessionFactoryInitializion.OnBackgroundInitializationException == null)
             {
                 throw;
             }
             sessionFactoryInitializion.OnBackgroundInitializationException(exception);
         }
     }, TaskCreationOptions.LongRunning);
 }
示例#3
0
 public TestLazySessionFactory(ISessionFactory sessionFactory, ISessionFactoryInitializion sessionFactoryInitializion)
     : base(sessionFactoryInitializion)
 {
     _sessionFactory = sessionFactory;
 }