public ISession GetOrCreateSession <TSessionContext>(Type type = null) where TSessionContext : ISessionContext { // var context = Ioc.Create(typeof(TSessionContext)); var _context = Ioc.Create <ISessionContext>(typeof(TSessionContext)); ISessionFactory sessionFactory = _sessionFactoryProvider.GetSessionFactory(_context.Name); string sessionKey = _context.Name + "#"; string connectionString = _context.GetConnectionString(); if (!ActiveSessions.TryGetValue(sessionKey, out ISession session)) { if (Options.IsTransactional == true) { ActiveTransactionInfo activeTransactionInfo = ActiveTransactions.GetOrDefault(connectionString); if (activeTransactionInfo == null) { session = DbConnection != null ? sessionFactory.WithOptions().Connection(DbConnection).OpenSession() : sessionFactory.OpenSession(); ITransaction transaction = Options.IsolationLevel.HasValue ? session.BeginTransaction(Options.IsolationLevel.Value.ToSystemDataIsolationLevel()) : session.BeginTransaction(); activeTransactionInfo = new ActiveTransactionInfo(transaction, session.Connection, session); ActiveTransactions[connectionString] = activeTransactionInfo; } else { session = activeTransactionInfo.StarterSession; activeTransactionInfo.AttendedSessions.Add(session); } } else { session = DbConnection != null ? sessionFactory.OpenSessionWithConnection(DbConnection) : sessionFactory.OpenSession(); } ActiveSessions[sessionKey] = session; } var filters = _context.Filters().ToList(); foreach (var filter in filters) { var name = filter.Name(); var parameters = filter.Parameters(); var _filter = session.EnableFilter(name); foreach (var parameter in parameters) { _filter.SetParameter(parameter.Key, parameter.Value); } } return(session); }
public ISession GetOrCreateSession <TSessionContext>() where TSessionContext : StoveSessionContext { ISessionFactory sessionFactory = _sessionFactoryProvider.GetSessionFactory <TSessionContext>(); var connectionStringResolveArgs = new ConnectionStringResolveArgs(); connectionStringResolveArgs["SessionContextType"] = typeof(TSessionContext); string connectionString = ResolveConnectionString(connectionStringResolveArgs); string sessionKey = typeof(TSessionContext).FullName + "#" + connectionString; if (!ActiveSessions.TryGetValue(sessionKey, out ISession session)) { if (Options.IsTransactional == true) { ActiveTransactionInfo activeTransactionInfo = ActiveTransactions.GetOrDefault(connectionString); if (activeTransactionInfo == null) { session = DbConnection != null ? sessionFactory.WithOptions().Connection(DbConnection).OpenSession() : sessionFactory.OpenSession(); ITransaction transaction = Options.IsolationLevel.HasValue ? session.BeginTransaction(Options.IsolationLevel.Value.ToSystemDataIsolationLevel()) : session.BeginTransaction(); activeTransactionInfo = new ActiveTransactionInfo(transaction, session.Connection, session); ActiveTransactions[connectionString] = activeTransactionInfo; } else { session = activeTransactionInfo.StarterSession; activeTransactionInfo.AttendedSessions.Add(session); } } else { session = DbConnection != null ? sessionFactory.OpenSessionWithConnection(DbConnection) : sessionFactory.OpenSession(); } ActiveSessions[sessionKey] = session; } return(session); }
public ISessionFactory GetSessionFactory() { return(_sessionFactory.GetSessionFactory()); }
public void Should_OpenSession_Work() { using (ISession session = _sessionFactoryProvider.GetSessionFactory <PrimaryStoveSessionContext>().OpenSession()) { } }
public SessionProvider(ISessionFactoryProvider sessionFactoryProvider) { _sessionFactory = sessionFactoryProvider.GetSessionFactory(); }