/// <summary> /// Get KTM transaction from ambient managed transaction (<see cref="Transaction.Current" />) /// </summary> /// <remarks> /// Currently this will require MS DTC service running. The created transaction should not be committed /// or rolled back itself explicitly. Use the owning managed transaction to control it. /// http://msdn.microsoft.com/en-us/library/cc303707.aspx /// </remarks> public static KtmTransactionHandle GetFromAmbientTransaction() { if (Transaction.Current == null) { throw new InvalidOperationException("Cannot create a KTM handle without Transaction.Current"); } return(KtmTransactionHandle.GetFromManaged(Transaction.Current)); }
/// <summary> /// Get KtmTransaction from managed transaction /// </summary> /// <param name="managedTransaction"> /// Owning managed transaction. /// </param> /// <returns> /// <see cref="KtmTransaction" /> participating in <paramref name="managedTransaction" /> /// </returns> /// <exception cref="ArgumentNullException"> /// <paramref name="managedTransaction" /> is <see langword="null"/> /// </exception> public static KtmTransaction Get(Transaction managedTransaction) { _log.Debug("Getting KTM transaction from managed"); Check.DoRequireArgumentNotNull(managedTransaction, "managedTransaction"); return(new KtmTransaction(KtmTransactionHandle.GetFromManaged(managedTransaction), managedTransaction)); }