protected override object CloseUnitOfWork(TransactionAttributeSettings transactionAttributeSettings, object transactionState, Exception err) { transactionState = base.CloseUnitOfWork(transactionAttributeSettings, transactionState, err); if (transactionManager.TransactionDepth == 0) { var sessionStorage = (NHibernateSession.Storage as IUnitOfWorkSessionStorage); if (sessionStorage != null) { sessionStorage.EndUnitOfWork( ((UnitOfWorkAttributeSettings) transactionAttributeSettings).CloseSessions); } } return transactionState; }
protected virtual object CloseUnitOfWork(TransactionAttributeSettings transactionAttributeSettings, object transactionState, Exception err) { string factoryKey = transactionAttributeSettings.FactoryKey; if (err == null) { try { NHibernateSession.CurrentFor(factoryKey).Flush(); transactionState = transactionManager.CommitTransaction(factoryKey, transactionState); } catch (Exception) { transactionState = transactionManager.RollbackTransaction(factoryKey, transactionState); transactionState = transactionManager.PopTransaction(factoryKey, transactionState); throw; } } else { transactionState = transactionManager.RollbackTransaction(factoryKey, transactionState); } transactionState = transactionManager.PopTransaction(factoryKey, transactionState); return transactionState; }
public UnitOfWorkAttribute() { this.settings = new UnitOfWorkAttributeSettings(); }
public TransactionAttribute() { settings = new TransactionAttributeSettings(); }
private object OnSuccess(TransactionAttributeSettings transactionAttributeSettings, object transactionState) { return CloseUnitOfWork(transactionAttributeSettings, transactionState, null); }
private object OnEntry(TransactionAttributeSettings transactionAttributeSettings, object transactionState) { return transactionManager.PushTransaction(transactionAttributeSettings.FactoryKey, transactionState); }
private TransactionAttributeSettings GetTransactionAttributeSettings( ITransactionAttributeSettings[] methodAttributes, ITransactionAttributeSettings[] classAttributes) { var transactionAttributeSettings = new TransactionAttributeSettings(); if (methodAttributes.Length > 0) { transactionAttributeSettings = methodAttributes[methodAttributes.Length - 1].Settings; } else if (classAttributes.Length > 0) { transactionAttributeSettings = classAttributes[classAttributes.Length - 1].Settings; } return transactionAttributeSettings; }