From 1824a738a92b4ebfd938b843ffbc1c50d23275c6 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Fri, 19 Sep 2014 10:15:28 -0700 Subject: [PATCH] Fixing IContentManagerSession usage --- src/Orchard/Data/SessionLocator.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/Orchard/Data/SessionLocator.cs b/src/Orchard/Data/SessionLocator.cs index 53b197192..d0e38002c 100644 --- a/src/Orchard/Data/SessionLocator.cs +++ b/src/Orchard/Data/SessionLocator.cs @@ -15,17 +15,18 @@ namespace Orchard.Data { public class SessionLocator : ISessionLocator, ITransactionManager, IDisposable { private readonly ISessionFactoryHolder _sessionFactoryHolder; private readonly IEnumerable _interceptors; - private Func _contentManagerSession; + private Func _contentManagerSessionFactory; private ISession _session; + private IContentManagerSession _contentManagerSession; public SessionLocator( - ISessionFactoryHolder sessionFactoryHolder, - Func contentManagerSession, + ISessionFactoryHolder sessionFactoryHolder, + Func contentManagerSessionFactory, IEnumerable interceptors) { _sessionFactoryHolder = sessionFactoryHolder; _interceptors = interceptors; - _contentManagerSession = contentManagerSession; + _contentManagerSessionFactory = contentManagerSessionFactory; Logger = NullLogger.Instance; IsolationLevel = IsolationLevel.ReadCommitted; @@ -75,12 +76,12 @@ namespace Orchard.Data { } } finally { + _contentManagerSession.Clear(); + Logger.Debug("Disposing session"); _session.Close(); _session.Dispose(); _session = null; - - _contentManagerSession().Clear(); } } } @@ -94,6 +95,7 @@ namespace Orchard.Data { Logger.Debug("Opening NHibernate session"); _session = sessionFactory.OpenSession(new OrchardSessionInterceptor(_interceptors.ToArray(), Logger)); _session.BeginTransaction(level); + _contentManagerSession = _contentManagerSessionFactory(); } class OrchardSessionInterceptor : IInterceptor {