/// <summary> /// Invoke on Scope with Transaction. /// </summary> protected void InvokeWithTransactionOnScope(string transactionName, Action <DataScope <TSession, TMetaData> > toPerform) { using (IDataAccessAdapter adapter = _AdapterService.CreateAdapter()) { try { _AdapterService.StartTransaction(adapter, transactionName); var scope = BuildDataScope(adapter); PerformActionsOnScope(_AdapterService, toPerform, scope); _AdapterService.FinishTransaction(adapter); } catch (Exception ex) { adapter.Rollback(); if (!HandleException(transactionName, ex)) { throw ex; } } finally { adapter.Dispose(); } } }
/// <summary> /// Tears down the context. /// </summary> /// <param name="cxInfo">The cx info.</param> /// <param name="context">The context.</param> /// <param name="executionManager">The execution manager.</param> /// <param name="constructorArguments">The constructor arguments.</param> public override void TearDownContext(IConnectionInfo cxInfo, object context, QueryExecutionManager executionManager, object[] constructorArguments) { base.TearDownContext(cxInfo, context, executionManager, constructorArguments); ILinqMetaData contextAsLinqMetaData = context as ILinqMetaData; if (context != null) { var adapterToUseProperty = contextAsLinqMetaData.GetType().GetProperty("AdapterToUse"); if (adapterToUseProperty != null) { IDataAccessAdapter adapterUsed = adapterToUseProperty.GetValue(contextAsLinqMetaData, null) as IDataAccessAdapter; if (adapterUsed != null) { adapterUsed.Dispose(); } } } }
private void InvokeOnScopeWithoutTransaction(string message, Action <DataScope <TSession, TMetaData> > toPerform) { using (IDataAccessAdapter adapter = _AdapterService.CreateAdapter()) { try { var scope = BuildDataScope(adapter); PerformActionsOnScope(_AdapterService, toPerform, scope); } catch (Exception ex) { if (!HandleException(message, ex)) { throw ex; } } finally { adapter.Dispose(); } } }
public void Dispose() { _dataAccessAdapter.Dispose(); }