private void EnlistDistributedTransactionHelper(ITransaction transaction) { PermissionSet set = new PermissionSet(PermissionState.None); set.AddPermission(ExecutePermission); set.AddPermission(new SecurityPermission(SecurityPermissionFlag.UnmanagedCode)); set.Demand(); Bid.Trace("<prov.DbConnectionHelper.EnlistDistributedTransactionHelper|RES|TRAN> %d#, Connection enlisting in a transaction.\n", this.ObjectID); Transaction transactionFromDtcTransaction = null; if (transaction != null) { transactionFromDtcTransaction = TransactionInterop.GetTransactionFromDtcTransaction((IDtcTransaction) transaction); } this.InnerConnection.EnlistTransaction(transactionFromDtcTransaction); GC.KeepAlive(this); }