internal static TransactionContext EnsureTransaction(ref Transaction transaction, IDatabase database) { TransactionContext result = null; if (transaction != null) { if (transaction.Aborted) { throw new System.Transactions.TransactionAbortedException(); } // Just a mock result result = new TransactionContext(); } else { // Create a local transaction for the current operation System.Transactions.CommittableTransaction localTransaction = CreateDefaultTransaction(); transaction = Create(localTransaction); result = new TransactionContext(localTransaction); } transaction.Subscribe(database.DatabaseEngine.TransactionHandler); // database.DatabaseEngine.TransactionHandler.EnsureSubscription(transaction); return result; }