// GetCurrentTransactionAndScope // // Returns both the current transaction and scope. This is implemented for optimizations // in TransactionScope because it is required to get both of them in several cases. internal static void GetCurrentTransactionAndScope( TxLookup defaultLookup, out Transaction?current, out TransactionScope?currentScope, out Transaction?contextTransaction) { current = null; currentScope = null; contextTransaction = null; ContextData contextData = ContextData.LookupContextData(defaultLookup); if (contextData != null) { currentScope = contextData.CurrentScope; current = FastGetTransaction(currentScope, contextData, out contextTransaction); } }
internal static ContextData LookupContextData(TxLookup defaultLookup) { if (CallContextCurrentData.TryGetCurrentData(out ContextData currentData)) { if (currentData.CurrentScope == null && currentData.CurrentTransaction == null && defaultLookup != TxLookup.DefaultCallContext) { // Clear Call Context Data CallContextCurrentData.ClearCurrentData(null, true); return(TLSCurrentData); } return(currentData); } else { return(TLSCurrentData); } }
// GetCurrentTransactionAndScope // // Returns both the current transaction and scope. This is implemented for optimizations // in TransactionScope because it is required to get both of them in several cases. internal static void GetCurrentTransactionAndScope( TxLookup defaultLookup, out Transaction current, out TransactionScope currentScope, out Transaction contextTransaction ) { current = null; currentScope = null; contextTransaction = null; ContextData contextData = ContextData.LookupContextData(defaultLookup); if (contextData != null) { currentScope = contextData.CurrentScope; current = FastGetTransaction(currentScope, contextData, out contextTransaction); } }
internal static ContextData LookupContextData(TxLookup defaultLookup) { ContextData currentData = null; if (CallContextCurrentData.TryGetCurrentData(out currentData)) { if (currentData.CurrentScope == null && currentData.CurrentTransaction == null && defaultLookup != TxLookup.DefaultCallContext) { // Clear Call Context Data CallContextCurrentData.ClearCurrentData(null, true); return ContextData.TLSCurrentData; } return currentData; } else { return ContextData.TLSCurrentData; } }