/// <summary> /// Initializes new instance of <see cref="ChildNestedDbContextTransaction"/>. /// </summary> /// <param name="logger">Logger.</param> /// <param name="nestedTransactionManager">Nested transaction manager.</param> /// <param name="parent">Parent transaction.</param> public ChildNestedDbContextTransaction( IDiagnosticsLogger <RelationalDbLoggerCategory.NestedTransaction> logger, NestedRelationalTransactionManager nestedTransactionManager, NestedDbContextTransaction parent) : base(logger, nestedTransactionManager, Guid.NewGuid()) { _parent = parent ?? throw new ArgumentNullException(nameof(parent)); }
internal void Remove(NestedDbContextTransaction transaction) { if (!_transactions.Contains(transaction)) { return; } while (_transactions.Count > 0) { var tx = _transactions.Pop(); if (tx == transaction) { return; } tx.Dispose(); } }
internal async ValueTask RemoveAsync( NestedDbContextTransaction transaction) { if (!_transactions.Contains(transaction)) { return; } while (_transactions.Count > 0) { var tx = _transactions.Pop(); if (tx == transaction) { return; } await tx.DisposeAsync().ConfigureAwait(false); } }